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() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 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([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(*)
为解压
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
反转,在算法题中常见。
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