1 列表(list)
列表是一种序列,序列是Python 中最基本的数据结构。序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。Python 有 6 个序列的内置类型(字符串、列表、元组、字典、集合等),但最常见的是列表和元组(不可修改的列表)。列表都可以进行的操作包括索引,切片,加,乘,检查成员。
列表是一些变量组成的序列,这些变量可以是数字、字符串、列表、集合等等,一且皆可列,如下。
set1={1,2,3.5,3}#集合
list1=[1,2,'nihao',45]#列表1
list2=[list1,set1,'wotianna',98]#列表2,包含了列表1和集合1(列表嵌套)
print(list1,list2)
输出结果为
[1, 2, 'nihao', 45] [[1, 2, 'nihao', 45], {3.5, 1, 2, 3}, 'wotianna', 98]
一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
2 列表操作
2.1 索引
可以正序索引、也可以倒序索引,如下边两个图。
list1=[1,2,'3',"4"]
print(list1[0],list1[3])#列表元素正序索引
print(list1[-1],list1[-4])#
输出结果
1 4
4 1
2.2 更新列表
可以直接修改列表元素,也可以使用 append() 方法来添加列表项。
list1=[1,2,'3',"4"]
print(list1)
list1[0]=23
list1[2]='forestli'
print(list1)
输出结果
[1, 2, '3', '4']
[23, 2, 'forestli', '4']
2.3 删除列表元素
使用 del 语句来删除列表的的元素,可也已使用 remove() 方法。
list1=[1,2,'3',"4"]
print(list1)
del list1[2]
print(list1)
输出结果
[1, 2, '3', '4']
[1, 2, '4']
2.4 脚本操作符
Python 表达式 | 结果 | 描述 |
---|---|---|
len([1, 2, 3]) | 3 | 长度 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合 |
['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 重复 |
3 in [1, 2, 3] | True | 元素是否存在于列表中 |
for x in [1, 2, 3]: print(x, end=" ") | 1 2 3 | 迭代 |
2.5 截取与拼接
列表变量[头下标:尾下标:步长],步长默认是1,及正序步进1。
list1=[1,2,'3',"4"]
print(list1[:3])#截取元素0到元素3(不含)之间的元素
print(list1[1:])#截取元素1到最后的元素
print(list1[1:3])#截取元素1到元素3(不含)的元素
print(list1[-3:-1])#截取元素-3到元素-1(不含)的元素
print(list1[-1::-1])#倒序输出
print(list1[-1:-5:-1])#倒序输出,与上一个一样
list2=[34,'nihao',67]
list3=list1+list2 #拼接
print(list3)
输出结果
[1, 2, '3']
[2, '3', '4']
[2, '3']
[2, '3']
['4', '3', 2, 1]
['4', '3', 2, 1]
[1, 2, '3', '4', 34, 'nihao', 67]
2.6 列表函数和方法
函数
序号 | 函数 |
---|---|
1 | len(list) 列表元素个数 |
2 | max(list) 返回列表元素最大值 |
3 | min(list) 返回列表元素最小值 |
4 | list(seq) 将元组转换为列表 |
方法
序号 | 方法 |
---|---|
1 | list.append(obj) 在列表末尾添加新的对象 |
2 | list.count(obj) 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj) 将对象插入列表 |
6 | list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) 移除列表中某个值的第一个匹配项 |
8 | list.reverse() 反向列表中元素 |
9 | list.sort( key=None, reverse=False) 对原列表进行排序 |
10 | list.clear() 清空列表 |
11 | list.copy() 复制列表 |
3 元组(tuple)
元组和列表基本一样,不同之处在于
1.元组元素不能修改,但可以包含可以修改的元素,比如列表。
list1=[34,'nihao',67]
tup0=(1,2,3,'forest',list1,32)
print(tup0)
list1[2]='li'
print(tup0)
输出结果
(1, 2, 3, 'forest', [34, 'nihao', 67], 32)
(1, 2, 3, 'forest', [34, 'nihao', 'li'], 32)
元组的不可变指的是元组所指向的内存中的内容不可变,即当元组创建之后,其中的元素不能改变,给元组重新赋值是可以的。通过以下结果可以发现,重新赋值元组相当于重新创建了这个元组。
tup0=(1,2,3,'forest',32)
print(id(tup0))
#tup0[0]=98 #不允许修改,会报错
tup0=(123,'nihao',93) #允许修改
print(id(tup0),tup0)
输出结果
2574152482384
2574153871680 (123, 'nihao', 93)
2.在创建元组的时候使用小括号,列表使用的是中括号。但在索引元素的时候使用的都是中括号。
tup0=(1,2,3,'forest',32)
print(tup0[0])
输出结果为 1
3.元素不允许删除,但可以使用del删除整个元组。
4.元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用。
tup0=(2)
tup1=(2,)
print(type(tup0),type(tup1))
输出结果
<class 'int'> <class 'tuple'>