四方显神

导航

Python(五) 公共方法与推导式

1.常见的公共方法
2.序列类型之间的相互转换
3.列表集合字段推导式
4.列表推导式+if判断
5.for循环嵌套列表推导式
6.字典推导式
7.集合推导式


1.常见的公共方法(1)
所谓的公共方法就是支持大部分数据序列

'''
① +合并操作:字符串、列表、元组
② *复制操作:字符串、列表、元组
③ in:字符串、列表、元组、字典
④ not in:字符串、列表、元组、字典
'''

str1 = '远芳侵古道 '
str2 = '晴翠接荒城 '
print(str1 + str2)
print(str2 * 2)

print('=========')
list1 = ['山不在高', '有仙则名']
list2 = ['水不在深', '有龙则灵']
print(list1 + list2)
print('*:')
print(list1 * 3)

print('=========')
truple1 = ('客子光阴诗卷里', '杏花消息雨声中')
truple2 = ('笑杀陶渊明', '不饮杯中酒')
print(truple1 + truple2)
print('*:')
print(truple1 * 3)

print('=========')
dict1 = {'学如弓弩'}
dict2 = {'才如箭镞'}
# print(dict1 + dict2) # 字典没有这个公共方法,报错
print(dict1)
for i in dict1:
print(i)


2.常见的公共方法(2)
'''
len():计算容器中元素的个数
del或del():根据索引下标删除指定元素
max():返回容器中元素最大值
min():返回容器中元素最小值
range(start,end,step):生成从start到end(不包含)的数字,步长为step,供for循环使用
enumerate():函数用于将一个可遍历的数据对象组合为一个索引序列,同时列出数据和数据下标,一般用在for循环中
'''
str1 = '一任珠帘闲不卷,终日谁来?'
print(len(str1))
list1 = [1, 2, 6, 8, 3]
print(max(list1), min(list1))
print('----------------')
del list1[0] # 这个格式比较特殊
print(list1)
print('----------------')
dict1 = {'name': '李煜', 'age': 16}
print(dict1)
del dict1['age']
print(dict1)

num1 = int(input('输入第一个数'))
num2 = int(input('输入第二个数'))
num3 = int(input('输入第三个数'))
print(max(num1, num2, num3))

# enumerate(),把一个序列类型的数据构造成key:value结构,然后结合for循环进行遍历
list1 = [10, 20, 30, 40, 50]

i = 0
while i < len(list1):
print(f'{i}:{list1[i]}')
i += 1

for i in list1:
print(i)

for key, value in enumerate(list1):
print(f'{key}:{value}') # 我有点没太懂


3.序列类型之间的相互转换
# list():把某个序列类型的数据转化为列表
# tuple():把某个序列类型的数据转化为元组
# set():把某个序列类型的数据转化为集合(由于集合天生去重,所以在转换过程中,数据可能会有丢失的情况)
# 定义元素类型的序列
tuple1 = ('之子期宿来', 0, '孤琴候萝径')
list1 = list(tuple1)
print(type(list1)) # <class 'list'>

set1 = {10, 50, 20, 30, 40}
list3 = list(set1)
print(type(list3))

dict1 = {'李商隐': '唐', '欧阳修': '宋'}
list2 = list(dict1) # 字典转列表,只能把key作为列表的元素,value会自动舍弃
print(list2)
print(type(list2))

 

4.推导式
推导式comprehensions,又称解析式,是python的一种独有特性。推导式可以从一个数据序列
构建另一个新的数据序列(一个有规律的列表或控制一个有规律列表)的结构体。
共有三种推导:列表推导式、集合推导式、字典推导式。

5.列表推导式
基本语法:
①变量名=[表达式 for 变量 in 列表]
②变量名=[表达式 for 变量 in 列表 if 条件] 在其遍历过程中,引入if条件判断
等价于:
for 变量 in 列表:
if条件判断
③变量名=[表达式 for 变量 in 列表 for 变量 in 列表]

'''
需求:创建一个列表,列表中包含0-9十个元素
'''
# 使用简单的for循环或者while循环
list1 = []
for i in range(0, 10):
list1.append(i)
print(list1)
# 使用推导式:其实就是上面for循环的简化代码
list2 = [i for i in range(10)]
# 第一次循环取出0做为列表元素
# 第二次循环取出1作为列表元素
# ...
print(list2)

# 与if相结合
# 需求:创建列表推导式,用于简化for循环与if语句
# 案例:生成0-9之间的偶数
list3 = []
for i in range(10):
if i % 2 == 0:
list3.append(i)
print(list3)
# 使用列表推导式简化
list4 = [i for i in range(10) if i % 2 == 0]
print(list4)

# 循环嵌套
# 需求:创建一个列表=>[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
list5 = []
for i in range(1, 3):
for j in range(3):
list5.append((i, j))
print(list5)
# 使用列表推导式简化
list6 = [(i, j) for i in range(1, 3) for j in range(3)]
print(list6)


6.字典推导式
字典推导式是列表推导式思想的顺延,语法并不多,只不过产生的是字典而已
格式:
变量={key:value for key,value in 序列}

字典推导式的作用:快速合并列表为字典或提取字典中目标数据

'''
需求:创建一个字典,key是1-5的数字,值是这个数字的平方
dic1={1:1,2:4,3:9,4:16,5:25}
'''
dict1 = {key: key ** 2 for key in range(1, 6)}
print(dict1)

# 案例2:把两个列表合并为一个字典
list1 = ['name', 'age', 'gender']
list2 = ['tom', 20, 'male']
# person = {key: value for key in list1 for value in list2} #不对
person = {list1[i]: list2[i] for i in range(3)}
print(person)

7.集合推导式
集合推导式和列表推导式非常相似,唯一区别在于用{}代替[]
集合推导式和列表推导式最大的区别就是去重
# 创建一个集合,数据为下方列表的二次方
list1 = [1, 1, 2]
set1 = {1, 4}
set2 = {i ** 2 for i in list1}
print(set2)

posted on 2023-09-07 14:28  szdbjooo  阅读(74)  评论(0)    收藏  举报