python简写语法总结

发布时间 2023-09-29 14:54:04作者: 仗剑天涯横刀笑

Lambda

def add(a, b):
  return a + b
print(add(1, 2))

简写成

add = lambda a, b: a + b
print(add(1, 2))

[] 推导式

正常写法:

s_list = []
for i in range(5):
  s_list.append(i)
print(s_list)

简写:

s_list = [i for i in range(5)]
print(s_list)

判断

正常写法:

a = Flase
if a:
  a = 1
else:
  a = 0
print(a)

简写:

a = Flase
a = 1 if a else 2
print(a)

将 [] 推导式子与判断结合

正常写法:

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

简写:

s_list = [i for i in range(5) if i % 2 == 0]

尝试字典:

d = {'index' + str(i) : i for i in range(5) if i % 2 == 0}

enumerate

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据数据下标,一般用在 for 循环当中。

语法

enumerate(sequence, [start=0])

参数

  • sequence -- 一个序列、迭代器或其他支持迭代对象。
  • start -- 下标起始位置。

例1:

seq = ['a', 'b', 'c']
for i, content in enumerate(seq):
  print(i, content)

输出:(索引序列,所以 i 为索引)

0 a
1 b
2 c

例2:

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

参考文档:https://www.runoob.com/python3/python3-func-enumerate.html

zip

语法:

zip([iterable, ...])

参数说明:

  • Iterable -- 一个或多个迭代器;

返回值:

对象

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}

更多的需要同时循环的参数:

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

输出:

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

*zip

zip 是加压,那 zip(*) 为解压

a = [1,2,3]
b = [4,5,6]
a1, a2 = zip(*zip(a, b))
print(a1, a2)

输出:

(1, 2, 3) (4, 5, 6)

这与上面的zip写法输出不同,我再写一次 zip 比较一下:

a = [1,2,3]
b = [4,5,6]
print(zip(a, b))
print(list(zip(a, b)))

输出2:

<zip object at 0x7f8c080a6c80>

[(1, 4), (2, 5), (3, 6)]

可以看出,*zip的输出类似二维矩阵,不过是元组形式。而zip直接输出的是object对象,必须使用list强转一下可以输出。

参考文档:https://zhuanlan.zhihu.com/p/354924536

https://www.runoob.com/python3/python3-func-zip.html

https://mofanpy.com/tutorials/python-basic/interactive-python/lazy-usage

reverse & reversed

反转,在算法题中常见。

l = [1,2,3]
l.reverse()
print(l)

输出:

[3, 2, 1]

reversed:

l = [1,2,3]
for i in reversed(l):
    print(i)

输出2:

3
2
1