Python特别棒的特性

2019-06-28  本文已影响0人  liuchungui

1、*(星号表达式)解压可迭代对象赋值给多个变量

应用场景:解压接受可变长的变量,例如:

>>> record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212')
>>> name, email, *phone_numbers = record
>>> name
'Dave'
>>> email
'dave@example.com'
>>> 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

上一篇下一篇

猜你喜欢

热点阅读