1、列表推导

列表循环:dummy = [ord(symbol) for symbol in symbols]

传统for循环:

1
2
for symbol in symbols:
... codes.append(ord(symbol))

带条件的列表推导:beyond_ascii = [ord(s) for s in symbols if ord(s) > 127]

笛卡尔积:tshirts = [(color, size) for color in colors for size in sizes]

列表推导的作用只有一个: 生成列表。

2、生成器表达式

生成器表达式的语法跟列表推导差不多, 只不过把方括号换成圆括号而已

生成器表达式背后遵守了迭代器协议, 可以逐个地产出元素, 而不是先建立一个完整的列表, 然后再把这 个列表传递到某个构造函数里

初始化数组:tuple(ord(symbol) for symbol in symbols)

笛卡尔积:

1
2
for tshirt in ('%s %s' % (c, s) for c in colors for s in sizes): ➊
... print(tshirt)

3、元组tuple

具名元组

1
2
3
4
from collections import namedtuple
City = namedtuple('City', 'name country population coordinates') ➊
tokyo = City('Tokyo', 'JP', 36.933, (35.689722, 139.691667)) ➋

4、切片

seq[start:stop:step]

5、对序列使用+和*

1
2
3
l=[1,2,3]
print(l*3)
>>>[1,2,3,1,2,3,1,2,3]