序列:列表,元组,字典,集合,字符串
序列是一种数据存储方式,用来存储一系列的数据
在内存中,序列就是一块用来存放多个值的连续的内存空间
序列中存储的是整数对象的地址,而不是整数对象的值
列表:用于存储任意数目,任意类型的数据集合
列表是内置可变序列,是包含多个元素的有序连续的内存空间
列表中的元素各不相同,可以是任意类型
Python的列表大小可变,根据需要随时增加或缩小
方法 | 描述 |
list.append(x) | 将元素x增加到列表尾部 |
list.extend(alist) | 将列表alist所有元素加到列表list尾部 |
list.insert(index,x) | 在列表指定位置插入元素 |
list.remove(x) | 在列表删除首次出现的指定元素 |
list.pop([index]) | 删除并返回列表指定index处的元素,默认为最后一个元素 |
list.clear() | 删除列表所有元素,不是删除列表对象 |
list.index(x) | 返回第一个x的索引位置,若不存在则抛出异常 |
list.count(x) | 返回指定元素在列表中出现的次数 |
list.reverse() | 所有元素原地翻转 |
list.sort() | 所有元素原地排序 |
列表的创建:
基本语法【】创建:
a=[1,2,3,4,5]
b=[] #创建一个空列表对象
print(a) >>>[1,2,3,4,5]
list()创建:
使用list()可以将任何可迭代的数据转化成列表
a=list(range(5))
print(a) >>>[0,1,2,3,4]
range()创建整数列表:
range(start,end,step)
range()返回的是一个range对象,而不是列表,需要通过list()将其转换成列表对象
推导式生成列表:
#循环创建多个元素【0,2,4,6,8】
a=[x*2 for x in range(5)]
#通过if过滤元素
b=[x*2 for x in range(100) if x%9==0]
列表元素的添加:
append()方法:原地修改列表,在列表尾部添加元素
+运算符操作:创建新的列表对象,将原列表的元素和新列表的元素依此复制到新的列表对象中,会涉及大量的复制操作
extend()方法:将目标列表所有元素添加到本列表的底部,属于原地操作,不创建新的列表对象
Insert()插入元素:将指定元素插入到列表对象的任意位置,但是会让后面的元素进行移动,会影响处理速度
乘法扩展:使用乘法扩展列表,生成一个新列表,新列表元素是原列表元素的多次重复
列表元素的删除:
底层是元素的拷贝
pop():删除并返回指定位置元素,默认为最后一个元素
a = [1, 2, 3, 4]
b = a.pop()
print(a, b) #[1, 2, 3] 4
c = a.pop(1)
print(a, c) #[1, 3] 2
remove():删除首次出现的指定元素,若不存在该元素则抛出异常
a = [1, 2, 3, 2, 4]
a.remove(2)
print(a) #[1, 3, 2, 4]
a = [1, 2, 3, 2, 4]
a.remove(5)
print(a) #报错:ValueError: list.remove(x): x not in list
del():删除列表指定未知的元素:
a = [1, 2, 3, 2, 4]
del a[2]
print(a) #[1, 2, 2, 4]
列表元素访问和计数:
索引直接访问元素:
索引的区间在【0,列表长度-1】这个范围,超过这个范围会抛出异常
a=[1,2,3,4,5,6]
print(a[2]) #3
print(a[10]) #IndexError: list index out of range
index()获取指定元素在列表中首次出现的索引:
语法是:【value,start,end】,start和end指定了搜索的范围
a = [1, 2, 3, 2, 4]
b=a.index(2)
c=a.index(2,2)
d=a.index(2,2,4)
print(b) #1
print(c) #3
print(d) #3
count()获取指定元素在列表中出现的次数:
a = [1, 2, 3, 2, 4]
b=a.count(2)
print(b) #2
成员资格判断:
判断列表中是否存在指定的元素,使用in关键字来判断,返回True和False
切片slice操作适用于列表,元组,字符串等
列表的遍历:
a = [1, 2, 3, 2, 4]
for i in a: #i是临时变量
print(i)
复制列表元素到新列表对象:
a = [1, 2, 3, 2, 4]
b=[]+a #生成了新列表对象
列表排序(修改原列表,不建立新列表的排序):升序排序,降序排序,打乱排序
a = [1, 2, 5, 3, 4]
a.sort() #默认是升序排序
print(a) #[1, 2, 3, 4, 5]
a.sort(reverse=True) #默认是降序排序
print(a) #[5, 4, 3, 2, 1]
import random
a = [1, 2, 5, 3, 4]
random.shuffle(a) #打乱顺序
print(a) #[4, 5, 1, 3, 2]
建新列表的排序:
通过内置函数sorted()进行排序,返回新列表,对原列表不做修改
a = [1, 2, 5, 3, 4]
b = sorted(a)
print(b) #[1, 2, 3, 4, 5]
c = sorted(a, reverse=True)
print(c) #[5, 4, 3, 2, 1]
reversed()返回迭代器:
内置函数reversed()也支持逆序排列,不对原列表做任何修改,只是返回一个逆序排列的迭代器对象
a = [1, 2, 5, 3, 4]
b=reversed(a)
print(b) #<list_reverseiterator object at 0x0000000002779610>一个迭代器对象
c=list(b)
print(c) #[4, 3, 5, 2, 1]
d=list(b)
print(d) #[]迭代对象在第一次时已经遍历结束了,第二次不能使用
max和min:用于返回列表中的最大值和最小值
a = [1, 2, 5, 3, 4]
print(max(a)) #5
print(min(a)) #1
sum:对数值型列表所有元素进行求和操作,对非数值型列表运算会被报错
a = [1, 2, 5, 3, 4]
print(sum(a)) #15
a = [‘1’, ‘2’,’5’, ‘3’, ‘4’]
print(sum(a)) #报错:TypeError: unsupported operand type(s) for +: 'int' and 'str'
多维列表:
a = [[1, 2, 5, 3, 4],
[1, 2, 5, 3, 4],
[1, 2, 5, 3, 4]]
for i in range(3):
for j in range(5):
print(a[i][j], end='\t')
print() #打印完一行,换行