列表
一、什么是列表
列表(list)是Python常用的一个数据类型,用于存储多个连续的有序的数据
- 存储多个值
- 数据是连续的
- 有序
- 允许有重复的元素
- 可以存储相同类型的数据 n = [2,4,6,8,22]
- 也可以存储不同类型的数据 n = [2,4,’six’,8,22]
为什么要使用列表:
- 存储多个值
- a = 2 b = 4 c = 6 d = 8 e = 22 麻烦
- n = [2,4,6,8,22]
二、如何创建列表
创建普通列表:
列表中的元素的类型是相同的
1 | n = [2,4,6,8,22] # 列表是用中括号/方括号表示,元素之间用逗号分隔 |
创建混合列表
列表中的元素是不同类型的
1 | n = [1,2,'c',4,5] # 不建议这么使用 |
- 创建一个空列表
1 | empty = [] # 空列表 |
- 工厂函数
1 | t1 = list() # 构造函数 空列表 # a = int(5) |
三、访问列表中的元素
列表中的每一个数据项称为列表的元素,列表中的元素是有顺序,在列表中每一个元素都有一个编号,来记录元素在列表中的位置,这个编号默认是从0开始,到n-1(其中n表示元素的个数),这个编号称之为下标或索引(index)
程序员的世界,标号一般都是从0开始
访问列表中的元素: 列表名[索引]
1 | n = [2,4,6,8,22] |
1 | # 遍历列表中的元素 |
交换列表中的两个元素的值
1
2n = [2, 4, 6, 8, 22]
n[1],n[2] = n[2],n[1]
四、修改列表中的元素
1 | n = [2, 4, 6, 8, 22] |
如果要修改列表中的元素值,就是将它作为左值:
1 | n[0] = 3 |
五、添加列表元素
append()方法
- 作用:向列表最后添加一个元素
- 形式:
L.append(object)
1
2
3letters = ['a','b','c']
letters.append('d') # 函数、类和对象
print(letters) # => ['a','b','c','d']insert()函数
- 作用:在指定位置插入元素
- 形式:
L.insert(index, object)
1
2
3letters = ['a','b','c']
letters.insert(0,'A')
print(letters) # ['A','a','b','c']extend()函数
- 作用:向一个列表中扩展另一个列表(将一个列表中的元素添加到另一个列表中)
- 形式:
L.extend(iterable)
1
2
3
4
5
6
7
8
9l1 = ['a','b','c']
l2 = ['x','y','z']
# for l in l2:
# l1.append(l)
l1.extend(l2)
print(l1)
l1.extend("Helloworld") # ['a', 'b', 'c', 'H', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
print(l1)
面试题:
实现列表去重: [2,4,6,4,8,22,6,30]
1 | 1. set( [2,4,6,4,8,22,6,30] ) # 集合不允许有重复的元素 -- 打乱顺序 |
判断列表中是否存在某个元素:
1 | numbers = [2, 4, 6, 4, 8, 22, 6, 30] |
六、删除列表中的元素
remove()函数
- 作用:移除列表中的一个已存在的元素,如果值不存在则抛出异常-出错
- 形式:
L.remove(value)
1
2
3numbers = [2,4,6,8,22]
numbers.remove(2)
print(numbers) # =>[4,6,8,22]1
2
3
4# 删除一个不存在的元素
numbers = [2,4,6,8,22]
numbers.remove(3)
print(numbers) # ValueError: list.remove(x): x not in listpop()函数
- 作用:移除列表中的最后一个元素或者指定位置的元素,并返回被移除的元素
- 形式:
L.pop([index] - 可选)
1
2
3
4numbers = [2,4,6,8,22]
item = numbers.pop() # 移除最后一个元素
print(numbers) # [2,4,6,8]
print(item) # 221
2
3
4
5
6item = numbers.pop(1)
print(item) # 4
print(numbers) # [2, 6, 8]
# 如果下标越界 则 出错
item = numbers.pop(100) # IndexError: pop index out of rangeclear()函数
- 作用: 清空列表中的所有元素
- 形式:
L.clear()
1
2
3numbers = [2,4,6,8,22]
numbers.clear()
print(numbers) #=> []del 操作符
- 作用:删除列表中的某个元素
- 形式:
del n[0]
1
2
3numbers = [2,4,6,8,22]
del numbers[0]
print(numbers)
七、列表操作符
- 合并列表
1 | a = [1,2,3] |
- 重复操作符
1 | a = [1,2,3] |
- 成员操作符
- in 操作符 : 判断某个元素是否在某个列表中
- not in 操作符
1 | a = [1,2,3] |
八、列表切片
切片:截取列表中的部分元素
1 | a = ['A', 'B', 'C', 'D', 'E', 'F'] |
- 切片: a[start:stop:step]
1 | a = ['A', 'B', 'C', 'D', 'E', 'F'] |
- 切片支持负数:
1 | a = ['A', 'B', 'C', 'D', 'E', 'F'] |
- 切片时指定第三个参数
1 | a = ['A', 'B', 'C', 'D', 'E', 'F'] |
1 | a = ['A', 'B', 'C', 'D', 'E', 'F'] |
九、常用的函数和方法
在Python中提供了一些全局函数来直接操作列表
- max()函数
1
2n = [2,4,6,8,22]
print(max(n)) # 返回列表中的最大值- min()函数
1
2n = [2,4,6,8,22]
print(min(n)) # 返回列表中的最小值- len()函数
1
2
3
4
5
6
7n = [2,4,6,8,22]
print(len(n)) # 返回列表的元素的个数-长度 length
n = [2,4,6,8,22]
for i in range(len(n)):
print('第'+str(i+1)+'个值为:',n[i])- sum()函数
1
2
3
4
5
6
7
8a = [1,2,3,4,5]
print(sum(a))
l = list(range(101))
print(sum(l)) # 计算1-100以内的所有整数和
l = list(range(1,100,2)) # 计算1-100以内的所有奇数和
print(sum(l))列表中的其它方法
- list.count(item) : 统计item元素出现的次数
1
2n = [2,4,6,4,8,4,22]
print(n.count(4)) # 3- list.index(item):返回item元素第一次出现的位置
1
2n = [2,4,6,4,8,4,22]
print(n.index(4)) # 1- list.reverse():反转列表 修改原列表而不是生成一个新的列表
1
2
3n = [1,2,3,4,5,7]
n.reverse()
print(n) # [7, 5, 4, 3, 2, 1]- list.sort():对原列表排序
1
2
3
4
5
6n = [1,5,3,7,2,8,100,40]
n.sort()
print(n) # [1, 2, 3, 5, 7, 8, 40, 100] 升序
n.sort(reverse=True)
print(n) # [100, 40, 8, 7, 5, 3, 2, 1] 降序
十、二维列表
1 | # 一维列表 |
- 列表推导式
1 | a = [0,1,2,3] |