python列表
[]
表示列表,逗号分隔元素
a = ['apple','banana','cat','dog']
# a的类型
print(type(a)) # <class 'list'>
# 打印a
print(a) # ['apple', 'banana', 'cat', 'dog']
访问元素用下标访问,下标从0开始
'apple'
是第0个,用a[0]
表示
'cat'
是第2个,用a[2]
表示
'apple'
是第-4个,用a[-4]
表示
a = ['apple','banana','cat','dog']
#获取第0个元素
print("a[0] = ", a[0]) # dog
列表添加元素
在末尾添加单个元素:
a.append(x)
:列表a末尾添加元素x
a = []
a.append(123)
a.append("Hello")
a.append(3.14)
print("a = ", a)# [123, "Hello", 3.14]
a = [1, 2, 3, 4, 5]
a.append(6)
print("a = ", a) # [1, 2, 3, 4, 5, 6]
在末尾添加多个元素:
a.expend(x)
:列表a末尾添加x,x为可迭代对象,包括列表、元组、字符串等,不可为单个数字。
a = []
a.extend([1, 2, 3])
a.extend([4, 5, 6])
在中间插入元素:
a.insert(idx, x)
:列表a在下标为idx位置插入元素x,原来下标大于等于idx的元素往右移动一个位置。
a = [0, 1, 2, 3, 4]
# 在下标为idx的位置插入x
a.insert(3,2.5)
print("a = ", a)
利用del删除列表中的元素
del a[idx]
:删除列表a中下标为idx的元素
a = ['apple','banana','cat','dog']
del a[3]
print("a = ", a)# ['apple', 'banana', 'cat']
利用pop删除列表中的元素
a.pop(idx)
:删除列表a中下标为idx的元素
a.pop()
:删除列表a中最后一个元素
a = ['apple', 'banana', 'cat', 'dog']
x = a.pop(1)
print("x = ",x) # banana
print(a) # ['apple', 'cat', 'dog']
#pop不加参数,删除末尾元素
del_str = a.pop()
print("a = ", a)
print("输出元素为:", del_str)
根据值删除元素:
a.remove(x)
:删除列表a中的值为x的第一个元素
a = ['apple', 'banana', 'cat', 'dog', 'apple']
del_str = 'apple'
a.remove(del_str)
print("a = ", a) # ['banana', 'cat', 'dog', 'apple']
查找元素x
a.count(x)
:计算x在a中出现次数,如果未出现则为0,否则为出现次数
a.index(x, start, stop)
:计算元素x在列表a下标[ start, stop )中第一次出现的位置。
- 要保证x必须在区间[start, stop)中存在,否则报错
- start, stop不赋值,默认为在整个列表中查找
- 只赋值start, stop默认为列表元素
a = ['apple', 'banana', 'cat', 'dog', 'apple', 'cat']
print(a.count('apple')) # 2
# 在整个列表中查找第一个'cat'
print(a.index('cat')) # 2
# 从下标3开始查找第一个'cat'
print(a.index('cat', 3)) # 5
翻转列表
a.reverse
:列表a进行翻转
a = [1, 2, 3, 4, 5]
a.reverse()
print("a = ", a) # a = [5, 4, 3, 2, 1]
a.reverse()
print("a = ", a) # a = [1, 2, 3, 4, 5]
求出列表长度
len(a)
:求出列表a的长度
a = [1, 2, 3, 4, 5]
# 输出a的长度
print(len(a)) # 5
操作列表
遍历整个列表
a = ['apple', 'banana', 'cat', 'dog']
for x in a:
print(x)
利用for循环遍历列表,同时获取下标enumerate(a, start = 0)
a = ['apple', 'banana', 'cat', 'dog']
for idx, x in enumerate(a):
print(idx, x)
列表操作符
+ :连接两个列表
a*x :a 是list,x是int,构成一个新列表,其内容为a复制x次
a = list(range(5))
print("a = ", a) # a = [0, 1, 2, 3, 4]
b = list(range(0, 10, 3))
print("b = ", b) # b = [0, 3, 6, 9]
c = a + b
print("c = ", c) # c = [0, 1, 2, 3, 4, 0, 3, 6, 9]
d = a * 3
print("d = ", d) # d = [0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
内置函数
sum(a)
:求序列a的和
max(a)
:求序列a中的最大值
min(a)
:求序列a中的最小值
a = [1, 3, 5, 7, 9]
print("sum(a) = ", sum(a)) # sum(a) = 25
print("max(a) = ", max(a)) # max(a) = 9
print("min(a) = ", min(a)) # min(a) = 1
列表解析式
- 可以基于已有列表生成相关的新列表
[expression for member in iterable]
对于可迭代对象iterable的每个元素member,都执行expression构成新的列表。
a = [x**2 for x in range(11)]
print(a) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
a = [1, 2, 3, 4]
b = [3, 4, 5, 6]
c = [a[i] * b[i] for i in range(4)]
print(c) # [3, 8, 15, 24]
- 可以基于已有列表筛选并生成相关的新列表
[expression for member in iterable if conditional]
对于可迭代对象iterable的每个元素menber,如果满足条件conditional。执行expression构成新的列表
a = [x**2 for x in range(11) if x % 2 == 0]
print(a) # [0, 4, 16, 36, 64, 100]
列表切片
切片:列表的部分元素组成的新列表
a[start🔚step]
start :切片的下标起点(包含起点),默认为0
end:切片的下标终点(不包括终点),默认为列表长度
step:切片的步长,默认为1
a = ['apple', 'banana', 'cat', 'dog', 'egg']
b = a[2:4]
print('b = ', b) # b = ['cat', 'dog', 'egg']
c = a[::2]
print('c = ', c) # c = ['apple', 'cat', 'egg']
d = a[:3]
print('d = ', d) # d = ['apple', 'banana', 'cat']
e = a[-3:]
print('e = ', e) # e = ['cat', 'dog', 'egg']
复制列表
列表的赋值不等于复制,列表的赋值只是“引用”,此时相当于两个变量名代表同一个列表
正确复制的办法:
- 利用切片:b=a[:]
- 利用copy函数:b=a.copy()
a = ['apple', 'banana', 'cat', 'dog', 'egg']
#直接赋值,无法完成列表的复制
b = a
b[0] = "hello"
print("b = ", b) # b = ['hello', 'banana', 'cat', 'dog', 'egg']
print("a = ", a) # a = ['hello', 'banana', 'cat', 'dog', 'egg']
# 使用切片复制
a = ['apple', 'banana', 'cat', 'dog', 'egg']
b = a[:]
b[0] = 'Hello'
print("b = ", b) # b = ['Hello', 'banana', 'cat', 'dog', 'egg']
print("a = ", a) # a = ['apple', 'banana', 'cat', 'dog', 'egg']
# 使用copy复制
a = ['apple', 'banana', 'cat', 'dog', 'egg']
b = a.copy()
b[0] = 'Hello'
print("b = ", b) # b = ['Hello', 'banana', 'cat', 'dog', 'egg']
print("a = ", a) # a = ['apple', 'banana', 'cat', 'dog', 'egg']
python元组
- 元组:与列表类似,是由一系列按额定顺序排列的元素组成
- 用()创建,或者用tuple创建
- 与List区别
- List是可修改的序列,而元组是不可修改的,即创建无法修改当前元组