1、*(星号表达式)解压可迭代对象赋值给多个变量
应用场景:解压接受可变长的变量,例如:
>>> record = ('Dave', '[email protected]', '773-555-1212', '847-555-1212')
>>> name, email, *phone_numbers = record
>>> name
'Dave'
>>> email
'[email protected]'
>>> phone_numbers
['773-555-1212', '847-555-1212']
>>>
注意:星号表达式解压出来 的变量永远是列表类型
参考:https://python3-cookbook.readthedocs.io/zh_CN/latest/c01/p02_unpack_elements_from_iterables.html
2、zip迭代多个序列
为了同时迭代多个序列,可以使用zip()函数,例如:
>>> xpts = [1, 5, 4, 2, 10, 7]
>>> ypts = [101, 78, 37, 15, 62, 99]
>>> for x, y in zip(xpts, ypts):
... print(x,y)
...
1 101
5 78
4 37
2 15
10 62
7 99
>>>
zip(a, b)会生成一个可返回元组(x, y)的迭代器,其中x来自a,y来自b。一旦其中某个序列到底结尾,迭代宣告结束。因此迭代长度跟参数中最短序列长度一致。
当然,也可以使用itertools.zip_longest()函数来解决,从而与最长长度一致。
参考:https://python3-cookbook.readthedocs.io/zh_CN/latest/c04/p11_iterate_over_multiple_sequences_simultaneously.html
3、列表推导式(list comprehensions)
列表推导式提供了一种简明扼要的方法来创建列表。它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是0个或多个for或者if语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以if和for语句为上下文的表达式运行完成之后产生。
范式:variable = [out_exp for out_exp in input_list if out_exp == 2]
例子:
multiples = [i for i in range(30) if i % 3 is 0]
print(multiples)
# Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
参考:https://eastlakeside.gitbooks.io/interpy-zh/content/Comprehensions/list-comprehensions.html
4、匿名函数lambda
当我们的函数只使用一次,不需要显示的定义函数,直接传入匿名函数更方便。
代码示例:
>>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]
注意:匿名函数不能滥用,限制很多。
参考:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868198760391f49337a8bd847978adea85f0a535591000
https://www.zhihu.com/question/20125256