Python入门 - 推导式

推导式是什么?

用于创建容器对象的一种语法,主要用于创建list, dict, set, tuple。

 

1, list推导式

遍历+条件+产生的元素,用[]包装产生的每一个元素,其中条件是可选的。

my_list = [1, 2, 3]
result = [elem + 1 for elem in my_list]
print(type(result), result) # <class 'list'> [2, 3, 4]

result = [elem for elem in my_list if (1 == elem % 2)]
print(type(result), result) # <class 'list'> [1, 3]

 

嵌套用法

datas = [[11, 12, 13], [21, 22, 23]]
result = [ [row[i_col] for row in datas] for i_col in range(len(datas[0])) ]
print(type(result)) # <class 'list'> print(result) # [[11, 21], [12, 22], [13, 23]]

 

2, dict推导式

遍历+条件+产生的key和value,用{}包装产生的每一个key+value,其中条件是可选的。

my_list = ['a', 'bb', 'ccc']
result = {elem: len(elem) for elem in my_list}
print(type(result), result) # <class 'dict'> {'a': 1, 'bb': 2, 'ccc': 3}

result = {elem: len(elem) for elem in my_list if (len(elem) > 1)}
print(type(result), result) # <class 'dict'> {'bb': 2, 'ccc': 3}

 

3, set推导式

遍历+条件+产生的元素,用{}包装产生的每一个元素,其中条件是可选的。

my_list = ['a', 'bb', 'ccc']
result = {elem for elem in my_list}
print(type(result), result) # <class 'set'> {'ccc', 'bb', 'a'}

result = {elem for elem in my_list if (len(elem) > 1)}
print(type(result), result) # <class 'set'> {'ccc', 'bb'}

 

4, tuple推导式

遍历+条件+产生的元素,用()包装产生的每一个元素。其中条件是可选的

my_list = ['a', 'bb', 'ccc']
result = (elem for elem in my_list)
print(type(result), tuple(result)) # <class 'generator'> ('a', 'bb', 'ccc')

result = (elem for elem in my_list if (len(elem) > 1))
print(type(result), tuple(result)) # <class 'generator'> ('bb', 'ccc')

 

参考

Python 推导式 | 菜鸟教程 (runoob.com)

 

posted @ 2023-09-04 23:14  yanghui01  阅读(7)  评论(0编辑  收藏  举报