Python基础知识—Python的技巧

Python基础知识—Python的技巧

  • Lambda
    • lambda x: x+1
  • for的简写模式
    • [i*2 for i in range(10)]
    • {"i"+str(i): i*2 for i in range(10)}
  • if else 简写模式
    • a = 1 if True else 2
  • 一行for + if
    • [i*2 for i in range(10) if i%2==0]
  • enumerate
    • for i, item in enumerate(items)
  • zip
    • for n, s in zip(items, scores)
  • reverse & reversed
    • list.reverse()
    • for i in reversed(list)

1)Lambda:更直接的Function

  • 即使一个简单的add功能,都需要写下方4行的代码
def add(a, b):
    return a + b
 
print(add(1, 2))
  • 如果你满足
    • 功能很简单
    • 调用次数不多,没有正式的功能
add = lambda a, b: a+b
print(add(1, 2))

lambda不能滥用,有约定的前提,它不是正式功能,你要临时使用的时候可以用,正式使用的功能时,,还是不要写lambda里,就不是很正式

2)for的简单写法

l = []
for i in range(10):
    l.append(i*2)
print(l)

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

简化写法:

l = [i * 2 for i in range(10)]
print(l)

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

甚至还可以使用这种方法创建字典

d = {
    
    "index"+str(i): i*2 for i in range(10)}
print(d)

{
    
    'index0': 0, 'index1': 2, 'index2': 4, 'index3': 6, 'index4': 8, 'index5': 10, 'index6': 12, 'index7': 14, 'index8': 16, 'index9': 18}

使用场景,for循环内部比较简单时适合

3)if语句的简单写法

done = False
if done:
    a = 1
else:
    a = 2
print(a)
  • 简单写法
done = False
a = 1 if done else 2
print(a)

也是if语句内部比较简单时使用

4)for+判断简单写法

适用于:

  • 我要用一行for生成一个列表/字典
  • 对原始数据进行判断,符合要求的生成,不符合的抛弃

复杂写法:

l = []
for i in range(10):
    if i % 2 == 0:
        l.append(i*2)
print(l)

[0, 4, 8, 12, 16]

简写

l = [i*2 for i in range(10) if i % 2 == 0]
print(l)

[0, 4, 8, 12, 16]
  • 同样字典也是可以的
l = {
    
    "index"+str(i): i*2 for i in range(10) if i % 2 == }
print(l)

[0, 4, 8, 12, 16]

5)enumerate 自动加 index

  • 在循环中计数,达到一定的数值时进行相对应的操作

传统写法:

count = 0
l = [11, 22, 33, 44]
for data in l:
    if count == 2:
        data += 11
    l[count] = data
    count += 1
print(l)

[11, 22, 44, 44]

简便写法:

l = [11, 22, 33, 44]
for count, data in enumerate(l):
    if count == 2:
        data += 11
    l[count] = data
print(l)

[11, 22, 44, 44]

还可以初始化count的数值

l = [11, 22, 33, 44]
d = {
    
    }
for count, data in enumerate(l, start=5):
    d[count] = data
print(d)

{
    
    5: 11, 6: 22, 7: 33, 8: 44}

6)Zip同时迭代

  • 同时处理俩个列表,一个是姓名一个是分数,将它们合并成一个字典
name = ["a", "b", "c"]
score = [1, 2, 3]
d = {
    
    }
for i in range(3):
    d[name[i]] = score[i]
print(d)
 c

简化:

name = ["a", "b", "c"]
score = [1, 2, 3]
d = {
    
    }
for n, s in zip(name, score):
    d[n] = s
print(d)

{
    
    'a': 1, 'b': 2, 'c': 3}
  • 如果需要同时循环的东西变多了,也可以使用zip
name = ["a", "b", "c"]
score = [1, 2, 3]
bonus = [1, 0, 1]
d = {
    
    }
for n, s, b in zip(name, score, bonus):
    d[n] = s + b
print(d)

{
    
    'a': 2, 'b': 2, 'c': 4}

7)reverse & reversed 翻转列表

  • 第一种
l = [1, 2, 3]
_l = []
for i in range(len(l)):
    _l.append(l[-i-1])
print(_l)

[3, 2, 1]
  • 第二种
l = [1, 2, 3]
_l = [l[-i-1] for i in range(len(l))]
print(_l)

[3, 2, 1]
  • 第三种
l = [1, 2, 3]
l.reverse()
print(l)

[3, 2, 1]
  • 第四种
l = [1, 2, 3]
_l = l[::-1]
print(l)
print(_l)

[1, 2, 3]
[3, 2, 1]

参考:莫烦Python

猜你喜欢

转载自blog.csdn.net/Mrwei_418/article/details/121152150
今日推荐