Python容器类公共操作

2023-12-25 17:10:11

运算符

运算符Python 表达式结果描述支持的数据类型
+[1, 2] + [3, 4][1, 2, 3, 4]合并字符串、列表、元组
*["Hi!"] * 4['Hi!', 'Hi!', 'Hi!', 'Hi!']重复字符串、列表、元组
in3 in (1, 2, 3)True元素是否存在字符串、列表、元组、字典
not in4 not in (1, 2, 3)True元素是否不存在字符串、列表、元组、字典
> >= == < <=(1, 2, 3) < (2, 2, 3)True元素比较字符串、列表、元组

注意

  • in?在对?字典?操作时,判断的是?字典的键
  • in?和?not in?被称为?成员运算符

成员运算符

成员运算符用于?测试?序列中是否包含指定的?成员

运算符描述实例
in如果在指定的序列中找到值返回 True,否则返回 False3 in (1, 2, 3)?返回?True
not in如果在指定的序列中没有找到值返回 True,否则返回 False3 not in (1, 2, 3)?返回?False

注:在对?字典?操作时,判断的是?字典的键

Python 内置函数

函数描述备注
len(item)计算容器中元素个数
del(item)删除变量del 有两种方式(关键字和函数)
max(item)返回容器中元素最大值如果是字典,只针对 key 比较
min(item)返回容器中元素最小值如果是字典,只针对 key 比较
range(start, end, step)?成从start到end的数字,步?为 step,供for循环使?
enumerate()函数?于将?个可遍历的数据对象组合为?个索引序列,同时列出数据和数据下标,?般?在 for 循环当中
cmp(item1, item2)比较两个值,-1 小于/0 相等/1 大于Python 3.x 取消了 cmp 函数

注:字符串?比较符合以下规则: "0" < "A" < "a"

len()
# 1. 字符串
str1 = 'abcdefg'
print(len(str1)) # 7
# 2. 列表
list1 = [10, 20, 30, 40]
print(len(list1)) # 4
# 3. 元组
t1 = (10, 20, 30, 40, 50)
print(len(t1)) # 5
# 4. 集合
s1 = {10, 20, 30}
print(len(s1)) # 3
# 5. 字典
dict1 = {'name': 'Rose', 'age': 18}
print(len(dict1)) # 2
del()?
# 1. 字符串
str1 = 'abcdefg'
del str1
print(str1)
# 2. 列表
list1 = [10, 20, 30, 40]
del(list1[0])
print(list1) # [20, 30, 40]
max()?
# 1. 字符串
str1 = 'abcdefg'
print(max(str1)) # g
# 2. 列表
list1 = [10, 20, 30, 40]
print(max(list1)) # 40
min()?
# 1. 字符串
str1 = 'abcdefg'
print(min(str1)) # a
# 2. 列表
list1 = [10, 20, 30, 40]
print(min(list1)) # 10
?range()

1. 如果不写开始,默认从0开始
2. 如果不写步长,默认为1

# 1 2 3 4 5 6 7 8 9
for i in range(1, 10, 1):
 print(i)
# 1 3 5 7 9
for i in range(1, 10, 2):
 print(i)
# 0 1 2 3 4 5 6 7 8 9
for i in range(10):
 print(i)
?enumerate()

语法

enumerate(可遍历对象, start=0)

注意:

  • start参数?来设置遍历数据的下标的起始值,默认为0?
  • enumerate 返回结果是元组,元组第一个数据是原迭代对象的数据对应的下标,元组第二个数据是原迭代对象的数据
list1 = ['a', 'b', 'c', 'd', 'e']
for i in enumerate(list1):
 print(i)
for index, char in enumerate(list1, start=1):
 print(f'下标是{index}, 对应的字符是{char}')

切片

描述Python 表达式结果支持的数据类型
切片"0123456789"[::-2]"97531"字符串、列表、元组
  • 切片?使用?索引值?来限定范围,从一个大的?字符串?中?切出?小的?字符串
  • 列表?和?元组?都是?有序?的集合,都能够?通过索引值?获取到对应的数据
  • 字典?是一个?无序?的集合,是使用?键值对?保存数据

容器类型转换

tuple()

将某个序列转换成元组

list1 = [10, 20, 30, 40, 50, 20]
s1 = {100, 200, 300, 400, 500}
print(tuple(list1))
print(tuple(s1))

list()

将某个序列转换成列表

t1 = ('a', 'b', 'c', 'd', 'e')
s1 = {100, 200, 300, 400, 500}
print(list(t1))
print(list(s1))

?set()

将某个序列转换成集合

list1 = [10, 20, 30, 40, 50, 20]
t1 = ('a', 'b', 'c', 'd', 'e')
print(set(list1))
print(set(t1))

?注意:

  1. 集合可以快速完成列表去重
  2. ?集合不?持下标

推导式

列表推导式

作?:??个表达式创建?个有规律的列表或控制?个有规律列表。

列表推导式?叫列表?成式

需求:

创建?个0-10的列表

while循环实现
# 1. 准备?个空列表
list1 = []
# 2. 书写循环,依次追加数字到空列表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)
if实现?
list1 = [i for i in range(10) if i % 2 == 0]
print(list1)

?多个for循环实现列表推导式

?需求:创建列表如下:

[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

list1 = [(i, j) for i in range(1, 3) for j in range(3)]
print(list1)

字典推导式?

作用

快速合并列表为字典或提取字典中?标数据

示例

1、创建?个字典:字典key是1-5数字,value是这个数字的2次?

dict1 = {i: i**2 for i in range(1, 5)}
print(dict1) # {1: 1, 2: 4, 3: 9, 4: 16}

2. 将两个列表合并为?个字典

list1 = ['name', 'age', 'gender']
list2 = ['Tom', 20, 'man']
dict1 = {list1[i]: list2[i] for i in range(len(list1))}
print(dict1)

?3. 提取字典中?标数据

counts = {'MBP': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}
# 需求:提取上述电脑数量?于等于200的字典数据
count1 = {key: value for key, value in counts.items() if value >= 200}
print(count1) # {'MBP': 268, 'DELL': 201}

?集合推导式

需求:创建?个集合,数据为下?列表的2次?

list1 = [1, 1, 2]
list1 = [1, 1, 2]
set1 = {i ** 2 for i in list1}
print(set1) # {1, 4}
# 注意:集合有数据去重功能。

文章来源:https://blog.csdn.net/weixin_45490820/article/details/135136847
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。