Python数据类型:序列(列表list、元组tuple)
一:序列
序列sequence是多个值组成的一个整体,Python中的序列包含列表list
、元组tuple
、字符串str
等。
二:列表list
字符串转列表list()
['a', 'b', 'c']
print(list('abc'))
正负索引
- 正索引:从0开始,方向从左到右。
- 负索引:从-1开始,方向从右到左。
chars = ['a', 'b', 'c', 'd', 'e', 'f']
# nums[0]=a, nums[-1]=f
print(f"chars[0]={nums[0]}, nums[-1]={chars[-1]}")
切片
[开始索引:结束索引:步长]
- 开始索引: 可以是正索引也可以是负索引,如果省略开始索引默认从头开始。
- 结束索引:可以是正索引也可以是负索引,如果省略结束索引默认到列表的结尾,不包含结束索引元素。
- 步长:默认为1,大于1表示:包含第一个元素,然后每隔n -1 获取指定的元素。
切片获取
chars = ['a', 'b', 'c', 'd', 'e', 'f']
# ['c', 'd', 'e', 'f']
print(chars[2:])
# ['a', 'b'] 不包含index=2的元素
print(chars[:2])
# ['e', 'f'] 负索引,从右到左
print(chars[-2:])
# ['b', 'c']
print(chars[1:3])
# ['d', 'e']
print(chars[-3:-1])
# ['b', 'c']
print(chars[1:-3])
# ['b', 'c', 'd', 'e']
print(chars[1:5:1])
# ['b', 'd'] 从[1:5]获取的结果开始,每隔步长-1个获取一个元素
print(chars[1:5:2])
# ['a', 'c', 'e']
print(chars[::2])
# ['f', 'd']
print(chars[-1:-5:-2])
切片修改元素
nums = [1, 2, 3, 4, 5]
nums[1:4] = [22, 33, 44]
# [1, 22, 33, 44, 5]
print(nums)
切片添加元素
切片赋值时当开始索引等于结束索引时,此时是在该索引位置添加多个索引元素
nums = [1, 5]
# 5
print(nums[1])
# []:开始包含index=1,结束又不包含index=1,所以为[]
print(nums[1:1])
nums[1:1] = [2, 3, 4]
# [1, 2, 3, 4, 5]
print(nums)
切片删除元素
nums = [1, 2, 3, 4, 5]
nums[1:4] = []
# [1, 5]
print(nums)
# 相当于del[1:4]
del nums[1:4]
nums = [1, 2, 3, 4, 5]
nums[1:4] = ['b', 'c']
# [1, 'b', 'c', 5]
print(nums)
序列相加 +
# [1, 2, 3, 'a', 'b', 'c']
print([1, 2, 3] + ['a', 'b', 'c'])
序列相乘 *
序列相乘表示将列表中的所有元素追加到列表中几次。
# [1, 2, 3, 1, 2, 3, 1, 2, 3]
print([1, 2, 3] * 3)
# 初始化3个空元素
# [None, None, None]
print([None] * 3)
成员资格 in
print(1 in [1, 'hello', 2.0, True])
长度len、最大值max、最小值min
nums = [0, 1, 2, 3, 4, 5]
# 6, 5, 0
print(f'{len(nums)}, {max(nums)}, {min(nums)}')
删除元素
chars = ['a', 'b', 'c', 'd', 'e']
# 根据索引删除
del chars[0]
# 根据元素值删除
chars.remove('a')
# 根据索引删除,并返回删除的元素,pop=a
pop = chars.pop(0)
# 清空列表 chars=[]
chars.clear()
元素拼接成字符串
print(",".join(['a', 'b', 'c']))
三:元组tuple
元组tuple和列表list最大的不同是元组不可以修改,其它的和列表没什么区别。