列表解析List Comprehension
语法:
◆ [返回值 for 元素 in 可迭代对象 if 条件]
◆ 使用中括号[],内部是for循环,if条件语句可选
◆ 立即返回一个新的列表
优点
列表解析式是一种语法糖,引入一个新的概念:语法糖
语法糖(Syntactic sugar),是由Peter J. Landin(和图灵一样的天才人物,是他最先发现了Lambda演算,由此而创立了函数式编程)创造的一个词语,它意指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法。语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读。
在python语言中语法糖有三元表达式、列表生成式、列表生成器、迭代器等等,具体可参考如下博客:
https://segmentfault.com/a/1190000006261012
◆ 编译器会优化,不会因为简写而影响效率,反而因优化提高了效率
◆ 减少程序员工作量,减少出错
◆ 简化了代码,但可读性增强
基础语法格式
举例:
list1=[]
for i in range(10):
list1.append(i)
print(list1)
>>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#变形后:
print([i for i in range(10)])
二者得到的答案是一致的,但是后者的代码量个简洁度明显低于前者.
条件语法格式
列表解析式还可以引进 if判断语句:
举例:
打印20以内既能被2整除又能被3整除的数:
print([i for i in range (1,20) if i%==0 if i %3 ==0])
只需要一行代码即可达到要求,而且还是嵌套的2层if.
嵌套循环语法
列表解析还可以嵌套两个for 循环
[(x