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)