Python学习day8(数据的公共操作和推导式)
公共操作
运算符
公共方法
range(start,end,step)
首先需要注意:range函数生成的数据序列是不包含end的。
range()数据序列不可直接被打印,需要遍历:
print(range(1, 10, 1))#range(1, 10) for i in range(1, 10, 1): print(i)# 1,2,3…………
- 如果不写开始,默认从0开始
- 如果不写步长,默认为1
for i in range(10): print(i)
enumerate()
list1 = [a, b, c, d, e] for i in enumerate(list1, start=1): print(i) 运行结果 (1, a) (2, b) (3, c) (4, d) (5, e) #返回结果是元组,元组第一个数据是原迭代对象的数据对应的下标,元组第二个数据是原迭代对象的数据
容器类型相互转换
列表、元组、集合之间可以相互进行方便地进行类型转换。 数据先准备好:
list1 = [10, 20, 30, 20, 40, 50] s1 = { 100, 300, 200, 500} t1 = (a, b, c, d, e)
list()
# list():转换成列表 print(list(s1))#[200, 100, 500, 300] print(list(t1))#[a, b, c, d, e]
tuple()
# tuple(): 转换成元组 print(tuple(list1))#(10, 20, 30, 20, 40, 50) print(tuple(s1))#(200, 100, 500, 300)
set()
# set():转换成集合 print(set(list1))#{40, 10, 50, 20, 30} 自动去除重复 print(set(t1))#{b, e, a, d, c}
推导式
推导式的作用主要在于缩短代码量,使得代码更加简洁。
列表推导式
作用:用一个表达式创建一个有规律的列表或控制一个有规律的列表。
快速上手
需求:创建一个存放1-10的数据的列表
-
while循环实现
list1 = [] i = 0 while i < 10: list1.append(i) i += 1 print(list1)
-
for循环实现
list1 = [] for i in range(10): list1.append(i) print(list1)
-
列表推导式实现
list1 = [i for i in range(10)] print(list1)
带有if判断的列表推导式
需求创建一个0-10的并且只包含偶数的列表
-
使用公共方法range()实现
list1 = [i for i in range(0, 10, 2)] print(list1)
-
使用 for 循环 + if 实现
list2 = [] for i in range(10): if i % 2 == 0: list2.append(i) print(list2)
-
使用带 if 的列表推导式实现
list3 = [i for i in range(10) if i % 2 == 0] print(list3)
多个for循环嵌套的列表推导式
如果要求创建的一个列表如下:
[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
-
使用for循环实现
list1 = [] for i in range(1, 3): for j in range(3): # 列表里面追加元组: 循环前准备一个空列表,然后这里追加元组数据到列表 list1.append((i, j)) print(list1)
-
使用多个for循环的推导式实现
list2 = [(i, j) for i in range(1, 3) for j in range(3)] print(list2)
字典推导式
作用:常常用来把列表合并成为字典或提取字典中的目标数据。
-
案例1:生成如下字典:
{ 1: 1, 2: 4, 3: 9, 4: 16}
字典推导式实现:
dict1 = { i: i**2 for i in range(1, 5)} print(dict1)
【注:】python中可以使用 ** 运算符轻松完成一个数的n次方运算。
print(2**3) #2的3次方,结果为8
-
案例2:合并如下两个列表:
[name, age, gender, id] [Tom, 20, man]
字典推导式实现:
list1 = [name, age, gender, id] list2 = [Tom, 20, man] dict1 = { list1[i]: list2[i] for i in range(len(list2))} print(dict1) #{name: Tom, age: 20, gender: man}
-
案例3:提取字典中目标数据
数据:
{ MBP: 268, HP: 125, DELL: 201, Lenovo: 199, acer: 99}
需求:提取电脑台数大于等于200的字典数据
dict1 = { key: value for key, value in counts.items() if value >= 200} print(dict1) #{MBP: 268, DELL: 201}
集合推导式
用的不多,简单过一下。
list1 = [1, 1, 2] set1 = { i ** 2 for i in list1} print(set1) #{1, 4}