python 3 基础之各种推导式(列表、字典、集合)
1、列表推导式
1.1、普通列表推导式
用于快速创建一个有规律的列表,如下代码:
my_list = [i * i for i in range(1, 10)] print(my_list) ======================== 运行结果: [1, 4, 9, 16, 25, 36, 49, 64, 81]
相当于以下代码
my_list = [] for i in range(1,10): my_list.append(i * i) print(my_list)
代码理解:先将执行for循环,然后将每个 i 代入表达式 i * i 中,将运算结果循环添加到空列表中,得到最终结果
1.2、增加条件语句和多个循环
增加条件语句
推导式创建1~50之间偶数的列表
# 列表推导式创建一个1~50之间的偶数列表 my_list = [i for i in range(1,51) if i % 2 == 0] print(my_list) 运行结果:[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50] ================================================== # 非推导式创建 my_list = [] # for循环 for i in range(1,51): if i % 2 == 0: my_list.append(i) print(my_list) # 跟上面代码运行结果一致
循环循环嵌套
# 列表推导式创建for循环嵌套的列表 my_list = [a + b for a in ‘123‘ for b in ‘abc‘] print(my_list) =================================================== # 非推导式创建列表 my_list1 = [] for a in ‘123‘: for b in ‘abc‘: my_list1.append(a + b) print(my_list1) # 两者运行结果一样:[‘1a‘, ‘1b‘, ‘1c‘, ‘2a‘, ‘2b‘, ‘2c‘, ‘3a‘, ‘3b‘, ‘3c‘]
2、字典推导式
相对于列表,看冒号两边,一边属于字典的key ,一边是字典的value
# 字典用推导式创建 dic = {x: x ** 2 for x in (2, 4, 6)} print(dic) # 非推导式创建 dict = {} for x in (2,4,6): dict[x] = x ** 2 print(dict) ==================================== 两段代码运行结果一致:{2: 4, 4: 16, 6: 36}
3、集合推导式
创建一个空集合用 set(),因为 {} 是创建的空字典
# 推导式创建集合 a = {x for x in ‘abracadabra‘ if x not in ‘abc‘} print(a) # 非推导式创建集合 b = set() for x in ‘abracadabra‘: if x not in ‘abc‘: b.add(x) print(b) =========================================== 运行结果两段代码一致:{‘r‘, ‘d‘}
推导式没有元组,圆括号在Python中被用作生成器的语法
要通过类似方法生成元组,需要显式调用元组的类型转换函数tuple(),如下:
tup = tuple(x for x in range(9)) print(tup) print(type(tup)) ------------------------ 结果: (0, 1, 2, 3, 4, 5, 6, 7, 8) <class ‘tuple‘>