Python学习day8(数据的公共操作和推导式)

公共操作

运算符

在这里插入图片描述

公共方法

在这里插入图片描述
前面的都十分简单,我们主要关注range()和enumerate()这两个函数。

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…………
  1. 如果不写开始,默认从0开始
  2. 如果不写步长,默认为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}

我们需要关注集合中数据的无序性和不可重复性。

感谢阅读,完

发布了68 篇原创文章 · 获赞 57 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43598138/article/details/105394417