【python基础】列表推导式

292 阅读3分钟

推导表达式 列表、集合、字典以及生成器都可以使用推导式来创建;

列表

res = [ord(x) for x in 'spaam']

output >>> res

[115, 112, 97, 97, 109]

集合

res = {ord(x) for x in 'spaam'}

output >>> res

{112, 97, 115, 109}

字典

res = {x: ord(x) for x in 'spaam'}

output >>> res

{'s': 115, 'p': 112, 'a': 97, 'm': 109}

生成器

res = (ord(x) for x in 'spaam')

output >>> res

<generator object at 0x0000025AEC10CC10>

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 推导公式

列表推导式

[<表达式> for <变量> in <可迭代对象> if <逻辑条件>]

字典推导式

{<键值表达式>:<元素表达式> for <变量> in <可迭代对象> if <逻辑条件>}

集合推导式

{<元素表达式> for <变量> in <可迭代对象> if <逻辑条件>}

生成器推导式

(<元素表达式> for <变量> in <可迭代对象> if <逻辑条件>)

返回一个生成器对象,也是可迭代对象,但是生成器并不立即产生全部元素,仅在要用到元素的时候才生成,可以极大节省内存

1 2 3 4 5 6 7 8 9 10 11 12 列表推导式 列表推导式是写在一个方括号中,构建一个新的列表的方式;

在日常使用当中,使用列表推导式替代for循环语句可以提高执行效率;

简单的列表推导式

推导式形式

L = [1, 2, 3, 4, 5] res = [i + 10 for i in L]

for循环语句形式

res = [] for i in L: res.append(i + 10)

output >>> res

[11, 12, 13, 14, 15]

1 2 3 4 5 6 7 8 9 10 11 12 13 推导公式

[输出表达式 for 变量 in 输入序列] 1 嵌套循环(for) 两个不同的列表

推导式形式

res = [x + y for x in 'abc' for y in 'efg']

for循环语句形式

res = [] for x in 'abc': for y in 'efg': res.append(x + y)

output >>> res

['ae', 'af', 'ag', 'be', 'bf', 'bg', 'ce', 'cf', 'cg'] 1 2 3 4 5 6 7 8 9 10 11 推导公式

[输出表达式 for 变量1 in 输入序列1 for 变量2 in 输入序列2] 1 一个列表

推导式形式

L = ['abcdef', 'gggg'] res = [print(i) for x in L for i in x]

for循环语句形式

for x in L: for i in x: print(i)

output >>>

a b c d e f g g g g 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 推导公式

[输出表达式 for 变量1 in 输入序列 for 变量2 in 变量1] 1 for 与 if 组合

推导式形式

L = [1, 2, 3, 4, 5] res = [i for i in L if i > 3]

for循环与if分句组合形式

res = [] for i in L: if i> 3: res.append(i)

output >>> res

[4, 5]

1 2 3 4 5 6 7 8 9 10 11 12 13 推导公式

[输出表达式 for 变量 in 输入序列 if 可选的判断表达式]

输出表达式,产生最终列表的元素

变量,表示输入序列里面的元素

输入序列

可选的判断表达式

———————————————— 版权声明:本文为CSDN博主「浮世绘太空」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/weixin_4096…