新彩天欢迎您!
幻海优品

Python 列表、字典和集合推导式及生成器表达式

1、列表推导式

列表推导式写法简单而优雅,可以将多行代码融合成一行。主要是将其他对象转换成列表或对原来的列表进行过滤。

语法

[expression for iter_val in iterable]

[expression for iter_val in iterable if cond_expr]

例如,

list_comp1 = [x**2 for x in range(10) ]
print(list_comp1)
list_comp2 = [x**2 for x in range(10) if x%2 == 0]
print(list_comp2)

2、字典推导式

字典推导式写法简单而优雅,可以将多行代码融合成一行。主要是将其他对象转换成字典或对原来的字典进行过滤。

语法

{expression for iter_key,iter_val in iterable}

{expression for iter_key,iter_val in iterable if cond_expr}

例如,

my_dict = {'C': 22, 'Java': 24, 'Python': 28, 'Linux': 20}dict_comp1 = {key:key+"_"+str(value) for key, value in my_dict.items()}
print(dict_comp1)
dict_comp2 = {key:key+"_"+str(value) for key, value in my_dict.items() if value > 20}
print(dict_comp2)

3、集合推导式

集合推导式写法简单而优雅,可以将多行代码融合成一行。主要是将其他对象转换成集合或对原来的集合进行过滤。

语法

{expression for iter_val in iterable}

{expression for iter_val in iterable if cond_expr}

例如,

squared1 = {x**2 for x in [1, 1, 2, 3, 4, 5, 5]}
print(squared1)
squared2 = {x**2 for x in [1, 1, 2, 3, 4, 5, 5] if x < 5}
print(squared2)

4、生成器表达式

生成器表达式与列表推导式使用相同,区别在于生成器表达式用小括号()。生成器表达式返回的是一个生成器迭代器 generator

语法

(expression for iter_val in iterable)

(expression for iter_val in iterable if cond_expr)

例如,

gen_exp1 = (x**2 for x in range(10))print(gen_exp1)print(tuple(gen_exp1))#需要获得结果可以转成list或tuplegen_exp2 = (x**2 for x in range(10) if x%2 == 0)print(gen_exp2)print(list(gen_exp2))#需要获得结果可以转成list或tuple

相关文档:

Python生成器表达式和生成器(yield)用法总结

免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除