序列是python中最基本的数据结构,包括列表(list)、元组(tuple)、字符串(string)。它支持字符、数字、字符串甚至可以包含列表(即嵌套)。列表用[ ]标识,是python最通用的复合数据类型。
本节讲述列表的常用操作。食用方法:
- 本次内容以代码块的形式展现
- 代码块中#号后面的文字是对代码的解释
- 每个代码块后都有一个输出结果,展示的是该代码块在python中运行后的输出结果。
#列表的特征
lst=[1,2,3,'abc',[1,2,3],[1,['name',2,3]]] #可以包含数字、字符串、列表嵌套
#需打印嵌套结构中的‘name’时应如何操作?
print(lst[-1][1][0]) #打印嵌套结构中的元素,可进行逐级索引。
输出结果:
name
#序列的顺序是不可改变的,可通过索引来定位列表的元素
lst=[1,5,7,9,12]
print(lst[1],lst[3])
输出结果:
5 9
#列表可嵌套,即列表中可包含列表
lst=[1,2,3,[1,2,3]]
print(lst)
输出结果:
[1, 2, 3, [1, 2, 3]]
#列表可原位改变,即可以随时更改列表中的某个值
lst=[1,2,3,4,5]
lst[0]='abc'
print(lst)
输出结果:
['abc', 2, 3, 4, 5]
#列表中增加元素
name=['xiaoming','xiaohong']
print(name+['xiaogang']) #通过+号连接的方法可以添加元素,但这种方法是生成一个新的列表,原列表name保持不变
print(name)
name.append('xiaogang') #通过append方法增加元素,原列表name会改变
print(name)
输出结果:
['xiaoming', 'xiaohong', 'xiaogang']
['xiaoming', 'xiaohong']
['xiaoming', 'xiaohong', 'xiaogang']
#列表与生成器
print(range(5),type(range(5)))
print(list(range(5)))
m=range(5)
print(m)
print(m[0],m[3])
#range()是生成器,指向一个范围
#range()同样适用左闭右开,如range(5)指向0,1,2,3,4这几个值
#range(2,5)指向2,3,4这几个值,2和5之间使用逗号而不是冒号
#range(0,10,2)指向0,2,4,6,8,括号中的2指的是步长为2
输出结果:
range(0, 5) <class 'range'>
[0, 1, 2, 3, 4]
range(0, 5)
0 3
#可变列表list常用操作 ——添加元素 append和extend
a=[1,2,3]
b=[4,5,6]
a.append(b) #append()方法会直接将b加到a后面,形成一个嵌套结构
print(a)
c=[7,8,9]
d=[10,11,12]
c.extend(d) #extend()方法会将d中每个元素分别加入c中,形成的还是一个列表
print(c)
#需要注意的是,append可以添加单个元素,如1,但extend添加的必须是元素序列,即[1]
输出结果:
[1, 2, 3, [4, 5, 6]]
[7, 8, 9, 10, 11, 12]
#可变列表list常用操作 ——删除元素 remove、del、clear、pop
#remove、clear属于方法,del属于语句
lst=[0,1,2,3,4,5,6]
lst.remove(4) #remove 移除列表中某个值的第一个匹配项
print(lst)
lst=[0,1,2,3,4,5,6]
del lst[2] #del 删除索引为2的元素
print(lst)
lst=[0,1,2,3,4,5,6]
del lst[2:4] #del 可以用来删除切片
print(lst)
lst=[0,1,2,3,4,5,6]
lst.clear() #clear 用来清空元素
print(lst)
s=['ab','bc','cs','fe','od']
s1=s.pop(4) #pop方法可以删除指定索引的元素,并返回该元素的值
print(s1)
print(s)
输出结果:
[0, 1, 2, 3, 5, 6]
[0, 1, 3, 4, 5, 6]
[0, 1, 4, 5, 6]
[ ]
od
['ab', 'bc', 'cs', 'fe']
#可变列表list常用操作 ——插入元素 insert
lst=[1,2,3]
lst.insert(0,'a') #在索引为0的位置插入a,原先位于索引1位置的元素往后移动一个单位
print(lst)
# x.insert(i,m)方法:在索引i处插入m
#小技巧:在jupyter notebook中按下shift+tab键可以查看对应函数的说明
输出结果:
['a', 1, 2, 3]
#可变列表list常用操作 ——复制 copy
x=[1,2,3]
m=x.copy() #copy方法可以产生一个新的列表,使后续的操作可以分别针对x、m进行
x[0]=100
print(x)
print(m) #由于m是从x中复制出来的,单独对x中的元素j进行变更将不会影响m
输出结果:
[100, 2, 3]
[1, 2, 3]
#可变列表list常用操作 ——排序 sort、sorted
输出结果:
[1, 3, 5, 10]
['a', 'd', 's', 'x', 'z']
['z', 'x', 's', 'd', 'a']
[1, 9, 4, 2]
[1, 2, 4, 9]
#元组 tuple
#元组可以理解为不可变的列表,用()表示,它里面的元素不可改变
tup1=(1,2,3,4,5)
tup2='a','b','c','s' #元组也可以不加括号
tup4=(50,) #当元组中只有一个元素时,需要在元素后面添加一个逗号
print(tup1[0:2]) #元组的切片、索引跟list一样
del tup4 #元组不能删除其中的某个元素,但可以用del将整个元组删除
#元组也可以进行序列通用操作
print(len(tup1)) #len函数
print(tup1+tup2) #连接
print(tup1*2) #重复
print(max(tup1),min(tup1))
#list和tuple之间可以进行转换
lst1=[1,2,3]
tup5=tuple(lst1) #tuple()函数可将列表转为元组
print(tup5)
输出结果:
(1, 2)
5
(1, 2, 3, 4, 5, 'a', 'b', 'c', 's')
(1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
5 1
(1, 2, 3)
部分内容参考自: