Python中的基本顺序存储结构是列表与元组,其中列表是可变数据类型,元组是不可变数据类型。可变指的是列表中的元素的值和位置以及列表的长度可变,决定列表可以进行增删改。
列表与元组中的元素可以是任何类型的数据,包括整数、浮点数、布尔、字符串、列表、字典、元祖、集合、函数、类的对象等
以下是两种数据结构共有的方法
语法 | 描述 |
---|---|
x in s | 返回布尔值,x在s中 |
x not in s | 返回布尔值,x不在s中为True |
s + t | s和t的拼接,可以+= |
s * n or n * s | n为int类型,返回s重复n次的结果。可以*=,同上 |
s[i] | 返回索引为i的元素 |
s[i:j(:k)] | 切片,返回子数组,从s[i]~s[i-1],k为步长,默认为1. |
len(s) | 现有元素个数 |
min(s) | 最小元素 |
max(s) | 最大元素 |
元组的内建方法:
语法 | 描述 |
---|---|
s.index(x[,i[,j]]) | 在s[i] ~ s[j-1]中,第一个大小为x的元素的索引,i,j默认0,-1 |
s.count(x) | 统计x的数目 |
列表的内建方法
语法 | 描述 |
---|---|
list.append(obj) | 在列表末尾添加新的对象 |
list.count(obj) | 统计某个元素在列表中出现的次数 |
list.extend(seq) | 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置 |
list.insert(index, obj) | 将对象插入列表 |
list.pop([index=-1]) | 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
list.remove(obj) | 移除列表中某个值的第一个匹配项 |
list.reverse() | 反向列表中元素 |
list.sort(cmp=None, key=None, reverse=False) | 对原列表进行排序 |
list.clear() | 清空列表 |
list.copy() | 复制列表,浅拷贝 |
#列表
list1 = [1,"python",["hello",{"name":"aya"}],"a",(1,"2",{"age":14},[12]),"a"]
li = [1,2,3,4,6,7,8]
list2 = ["we"] #单元素列表
#元组
tuple1 = (1,"python",["hello",{"name":"aya"}],"a",(1,"2",{"age":14},[12]),"a")
tuple2 = (12,) #单元素元组,注意后边有个逗号
list3 = list(tuple2) #将元组转换成列表
tuple3 = tuple(list2) #将列表转换成元组
print(len(list1)) #list1元素数量统计
print(len(tuple1)) #tuple1元素数量统计
print(list1[1:4])#获取list1第2到4个元素
print(tuple1[1:-1])#获取tuple1第2到倒数第二个元素
print(list1+list2)
print(tuple2*3)
print("\n\n\n元组内建函数")
print(tuple1.index("python")) #返回"python"在tuple1中的索引值
print(tuple1.count("a")) #统计“a”在tuple1中的个数
print("\n\n\n列表内建函数")
print(list1.count("a")) #统计“a”在list1中的个数
print(list1.index("python")) #返回"python"在list1中的索引值
list1[0] = "java" #改变list1的第一个元素值为"java", 元组不能
print(list1)
list1.reverse() #使列表元素倒序
print(list1)
list1.insert(2,list2) #在list1的第三个位置插入list2
print(list1)
list1.append(tuple2) #在list1最后加入tuple2
list4 = list1.copy()
print(list1,"\n",list4)
list1.remove(list1[0]) #删除list1的第一个元素
print(list1)
list1.extend(tuple1[2]) #依次在list1最后加入tuple1中的各个元素
print(list1)
print(list1.pop()) # 删除list1的最后一个元素,并返回其值
print(list1)
#list.sort()可以传入两个参数:key,reverse,key表示需要排序的字段,reverse只有两个值Flase(从小到大排序),True(从大到小排序)
li.sort(reverse=True) #对li中的元素排序,
print(li)
list1.clear() #清空list1
print(list1)
执行结果:
6
6
['python', ['hello', {'name': 'aya'}], 'a']
('python', ['hello', {'name': 'aya'}], 'a', (1, '2', {'age': 14}, [12]))
[1, 'python', ['hello', {'name': 'aya'}], 'a', (1, '2', {'age': 14}, [12]), 'a', 'we']
(12, 12, 12)
元组内建函数
1
2
列表内建函数
2
1
['java', 'python', ['hello', {'name': 'aya'}], 'a', (1, '2', {'age': 14}, [12]), 'a']
['a', (1, '2', {'age': 14}, [12]), 'a', ['hello', {'name': 'aya'}], 'python', 'java']
['a', (1, '2', {'age': 14}, [12]), ['we'], 'a', ['hello', {'name': 'aya'}], 'python', 'java']
['a', (1, '2', {'age': 14}, [12]), ['we'], 'a', ['hello', {'name': 'aya'}], 'python', 'java', (12,)]
['a', (1, '2', {'age': 14}, [12]), ['we'], 'a', ['hello', {'name': 'aya'}], 'python', 'java', (12,)]
[(1, '2', {'age': 14}, [12]), ['we'], 'a', ['hello', {'name': 'aya'}], 'python', 'java', (12,)]
[(1, '2', {'age': 14}, [12]), ['we'], 'a', ['hello', {'name': 'aya'}], 'python', 'java', (12,), 'hello', {'name': 'aya'}]
{'name': 'aya'}
[(1, '2', {'age': 14}, [12]), ['we'], 'a', ['hello', {'name': 'aya'}], 'python', 'java', (12,), 'hello']
[8, 7, 6, 4, 3, 2, 1]
[]