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}  
