Python序列
Python中最基本的数据结构为序列。序列中的每个元素都有编号,即其位置或索引,一般从0开始。
序列中包含两个常用的数据结构:列表(list)与元组(tumple)。二者的主要不同就在于是否可以进行修改:元组不支持修改,而列表可以进行修改。
1.1 通用的序列操作
- 索引:可以通过索引值对序列中的元素进行访问
- 切片:可以使用
[m:n:k]
的方式完成序列中元素的截取,当m,n为负数的时候序列从后往前倒着切,m,n有一个缺省时代表从头或到尾部结束,k则表示步长 - 相加:支持两个序列通过
+
拼接起来 - 相乘:支持序列元素与数字相乘,代表序列中某元素的重复次数
- 成员资格检查:可以使用
in
关键字来确认某元素是否在此序列中,在就返回True
,否则返回False
1.2 列表
创建方式:
#1.使用内建函数list()创建
arr = list([1,2,3,4])
#2.使用字面量创建
arr = [1,2,3,4]
基本的列表操作:
- 修改:直接通过索引给元素赋值即可
- 删除:通过
del
关键字删除列表中的元素 - 插入和替换:可以使用切片进行插入和替换
- 在尾部添加:使用
append()
方法 - 清空列表:使用
clear()
方法 - 复制列表:使用
copy()
方法对列表进行深复制 - 计算频次:使用
count()
方法可以计算某元素在列表中出现的频次 - 列表拼接:使用
extend()
方法将另一个列表拼接到本列表的尾部(list1 + list2 返回新的列表 list3,list1.extend(list2) 则返回拼接完成后的list1) - 查找元素:使用
index()
方法将在列表中查找指定值第一次出现的索引 - 插入元素:使用
insert()
方法将一个对象插入列表 - 删除元素:
- 使用
pop()
方法,默认删除尾部元素,可指定索引位置进行删除(根据索引值删除元素) - 使用
remove()
方法(根据元素中的内容删除元素)
- 使用
- 列表逆序:使用
reverse()
方法,可将整个列表的原始顺序逆转 - 列表排序:
- 使用
sort()
方法,可选两个参数 key 和 reverse,直接在自身列表上进行排序 - 使用
sorted()
方法,可返回一个排好序的列表,而不是在自身列表上进行排序
- 使用
列表推导式:
使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表。列表推导式通常由以下几种常用的语法格式:
- 第一种写法:
# 生成指定范围的数值列表
列表名 = [表达式 for 变量名 in range(开始值, 结束值)]
# 例如:
square = [x**2 for x in range(1, 11)] # 注意range()是前闭后开区间
print("1到10的平方分别是", square)
- 第二种写法:
# 根据其他列表生成指定需求的列表
列表名 = [表达式 for 变量名 in 其他列表]
# 例如:
price = [1200, 5330, 2988, 6200, 1998, 8888]
sale = [int(x * 0.5) for x in price]
print("原价格:", price)
print("打五折的价格:", sale)
- 第三种写法:
# 从其他列表中选择符合条件的元素组成新的列表
列表名 = [表达式 for 变量名 in 其他列表 if 条件]
#例如:
price = [1200, 5330, 2988, 6200, 1998, 8888]
sale = [x for x in price if x > 5000]
print("原价列表:", price)
print("价格高于5000的:", sale)
1.3 元组
元组除了无法进行修改之外,其他与列表几乎一致
创建方式:
#1. 使用内建函数tuple()创建
tuple1 = tuple([1,2,3])
#2. 使用字面量创建
tuple2 = (1,2,3)
需要注意的是,元组使用字面量进行创建的时候,若只包含一个元素,则需要在元素后加上一个逗号,如:tup1 = (1,)
因为在Python中,1
与(1)
都代表数字1
元组推导式:
与列表推导式写法一致,只需要将外层的[]
换为()
即可