笔记带有个人侧重点,不追求面面俱到。
"""
格式 1:简单生成列表
[ for - in
]
"""
>>> [i**2 for i in range(5)]
[0, 1, 4, 9, 16]
"""
格式 2:条件生成列表
[ for - in
if ]
"""
>>> [i for i in range(5) if i % 2 == 0]
[0, 2, 4]
"""
格式 3:条件生成列表
[ if else for - in
]
"""
>>> list1 = [1, 2, 3, 4, 5]
>>> [1 if i > 3 else 0 for i in list1]
[0, 0, 0, 1, 1]
"""
格式 4:多条件生成列表
[ if else if else for - in
]
"""
"""
格式 5:多重循环
[ for in for in ]
[ for in for in ]
"""
>>> [i * j for i in range(5) for j in "ab"]
['', '', 'a', 'b', 'aa', 'bb', 'aaa', 'bbb', 'aaaa', 'bbbb']
>>> list1 = [[1, 2], [3, 4]]
>>> [j for item in list1 for j in item]
[1, 2, 3, 4]
"""
格式 6:嵌套列表
[[ for in ] for in ]
"""
>>> [[i * j for j in "ab"] for i in range(3)]
[['', ''], ['a', 'b'], ['aa', 'bb']]
扩展阅读:Python 中的列表推导式
"""
格式 1:简单生成
{: for - in
}
"""
>>> listdemo = ['Google','Runoob', 'Taobao']
>>> {key: len(key) for key in listdemo}
{'Google': 6, 'Runoob': 6, 'Taobao': 6}
"""
格式 2:条件生成
{: for - in
if }
"""
>>> {i: i**2 for i in range(5) if i % 2 == 0}
{0: 0, 2: 4, 4: 16}
参考 12.1 列表推导式,将 []
替换为 {}
。
注意: 元组推导式返回的结果是一个生成器对象。
>>> a = (x for x in range(1,10))
>>> a
<generator object <genexpr> at 0x7faf6ee20a50> # 返回的是生成器对象
>>> tuple(a) # 使用 tuple() 函数,可以直接将生成器对象转换成元组
(1, 2, 3, 4, 5, 6, 7, 8, 9)