索引Python中有六种内置序列,三种基本类型序列操作比较常见:列表、元组、字符串
大部分序列可以进行通用操作,包括索引、切片、相同类型序列相加,乘法、成员资格、长度、最大值和最小值
python中的索引从0开始计数,可以从右向左,也可以从左向右
从左向右x1 = [1, 2, 3, 4] x2 = (1, 2, 3, 4) x3 = "hello" print(x1[0]) print(x2[0]) print(x3[0])
结果:
1 1 h从右向左
从右向左是因为python索引支持负值
x1 = [1, 2, 3, 4] x2 = (1, 2, 3, 4) x3 = "hello" print(x1[-1]) print(x2[-1]) print(x3[-1])
4 4 o切片
python中的所有序列类型都可以进行切片操作
记切片的参数为[a,b,c],则a是切片第一个参数,默认为0,b是切片第二个参数,默认为序列的最后,c为步长(每次跳跃的个数)默认为1
x1 = [1, 2, 3, 4] print(x1[0:3]) # [1, 2, 3] print(x1[2:3]) # [3] # a为默认 print(x1[:3]) # [1, 2, 3] # b为默认 print(x1[0:]) # [1, 2, 3, 4] # a,b都为默认 print(x1[:]) # [1, 2, 3, 4] # 说明c默认为1 print(x1[0:4]) # [1, 2, 3, 4] print(x1[0:4:1]) # [1, 2, 3, 4] print(x1[0:4:2]) # [1, 3] # 说明负值情况 print(x1[-3:3]) # [2, 3] print(x1[2::-1]) # [3, 2, 1]
注意:
- 步长c不支持为0
- 正数步长从序列头部开始从左往右获取元素,负数相反,从右向左
- 正数步长开始点必须小于结束点,负数步长开始点必须大于结束点
可以使用+做连接,必须是同类型的序列才能相加
x1 = [1, 2, 3, ] + [4, 5, 6, 7] x2 = (1, 2, 3,) + (4, 5, 6, 7) x3 = "123" + "4567" print(x1) # [1, 2, 3, 4, 5, 6, 7] print(x2) # (1, 2, 3, 4, 5, 6, 7) print(x3) # 1234567
(1, 2, 3,) + [4, 5, 6, 7] # 错误 # Traceback (most recent call last): # File "E:王梦鑫网络模型torch7main.py", line 8, in序列重复# (1, 2, 3,) + [4, 5, 6, 7] # 错误 # TypeError: can only concatenate tuple (not "list") to tuple
可以用*做重复
x1 = [1, 2, 3] * 3 x2 = (1, 2, 3) * 3 x3 = '123' * 3 print(x1) # [1, 2, 3, 1, 2, 3, 1, 2, 3] print(x2) # (1, 2, 3, 1, 2, 3, 1, 2, 3) print(x3) # 123123123成员资格
用in运算符判断是否在序列中,是返回True,不是返回False
x1 = [1, 2, 3] x2 = (1, 2, 3) print(5 in x1) # False print(2 in x1) # True
注意:
in操作符的右边是字符,左边也要是字符,但是()in [] 是OK的,eg:
print(5 in "123456") # Traceback (most recent call last): # File "E:王梦鑫网络模型torch7main.py", line 7, in# print(5 in "123456") # TypeError: 'in ' requires string as left operand, not int
print((2) in [1, 2, 3]) # True最大最小值求和
x1 = [1, 2, 3, 4, 5, 6]
print("序列长度", len(x1)) # 序列长度 6
print("最小值", min(x1)) # 最小值 1
print("最大值", max(x1)) # 最大值 6
print("求和", sum(x1)) # 求和 21



