Python入门 - 推导式

就当笔记吧 / 2023-09-05 / 原文

推导式是什么?

用于创建容器对象的一种语法,主要用于创建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]

 

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)