概念
列表推导是一个十分强大的语法,他允许我们在一行代码之内利用现有的迭代器创建一个新的列表
基本语法
[expression for item in iterable if condition]
expression:用于计算新列表中的每一个元素的表达式
item:一个变量,就和平时我们经常用的for循环里的i差不多啦!(这么一看,原来i其实是item的缩写欸awa)
iterable:可迭代对象
condition:筛选条件
废话少说,直接上实例!
实例
1、简单的列表推导
num = [1, 2, 3]
squares = [x**2 for x in num] # [1, 4, 9]
2、有条件过滤的列表推导
num = [1, 2, 3, 4, 5]
squares = [x**2 for x in num if x % 2 == 0] # [4, 16]
3、嵌套列表推导
num = [(1, 2, 3), (4, 5, 6)]
squares = [x ** 2 for i in num for x in i if x % 2 == 0] # [4, 16, 36]
4、从字符串生成列表的列表推导
string = 'guolicheng'
ll = [x for x in string if x in 'golzceh'] # ['g', 'o', 'l', 'c', 'h', 'e', 'g']
5、从字典中生成取键值对的列表推导
dic = {'姓': '果', '名': '粒橙'}
ll1 = [(key, value) for key ,value in dic.items()] # [('姓', '果'), ('名', '粒橙')]
6、从列表字典中返回键值对
dic1 = [{'姓': '果', '名': '粒橙'}, {'姓': '太', '名': '空人'}]
dic_list = [(key, value) for i in dic1 for key, value in i.items()]
# [('姓', '果'), ('名', '粒橙'), ('姓', '太'), ('名', '空人')]