Python基础(四)之序列
1、简介
序列的特点就是根据索引来获取序列中的元素,第一个索引为0,第二个索引为1,依次类推。
2、基本操作
2.1、索引
序列中的元素可以通过索引获取,索引从0开始。 (序列可以使用倒叙,如 最后一个元素-1,倒数第二个-2,依次类推)
# 字符串
s = 'Python'
print(s[0]) # P
print(s[5]) # n
print(s[-1]) # n
# 列表
nums = [1 ,2, 3, 4, 5]
print(nums[0]) # 1
# 元组
a = (1, 2, 3, 4)
print(a[0]) # 1
2.2、切片
切片:通过索引获取序列中的单个元素,而分片则是获取序列的部分元素。分片操作需要两个索引作为边界,中间用冒号相隔。
# 字符串
s = "hello Python"
print(s[0:5]) # hello
print(s[6:]) # Python
print(s[:5]) # hello
print(s[-6:]) # Python
print(s[-6:-4]) # Py
print(s[-6:0]) # 空的 左边索引的元素比右边索引出现得晚,返回空序列
print(s[:]) # hello Python 获取整个序列,可以将两个索引都置为空
print(s) # hello Python
# 列表
nums = ['Python', 'hello', 'my']
print(nums[0:2]) # ['Python', 'hello']
# 元组
a = (9, 8, 7, 6, 5, 4)
print(a[1:]) # (8, 7, 6, 5, 4)
print(a[0:2]) # (9, 8)
【注】
切片有两个索引,第 1 个索引的元素是包含在内的,而第 2 个元素的索引 则不包含在内是一个左闭右开的区间
切片使用步长
切片的时候步长默认为1,是逐个获取,当然我们也可以自定义步长。
# 字符串
s = "hello Python"
print(s[0:5]) # hello 步长为 1,不写也可以,默认为 1
print(s[0:5:1]) # hello 步长为 1,不写也可以,默认为 1
print(s[0:5:2]) # hlo 步长为 2,取出 s[0], s[2], s[4]
print(s[::3]) # hlPh 步长为 2,取出 s[0], s[3], s[6], s[9]
当然步长也可以为负数, 表示从右到左获取元素
列表 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
倒索引 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[0:4:-1]) # []
print(nums[4:0:-1]) # [5, 4, 3, 2]
print(nums[4:0:-3]) # [5, 2]
print(nums[::-1]) # [9, 8, 7, 6, 5, 4, 3, 2, 1]
print(nums[::-2]) # [9, 7, 5, 3, 1]
print(nums[6::-1]) # [7, 6, 5, 4, 3, 2, 1]
print(nums[:6:-1]) # [9, 8]
总结
- 切片: 左索引:右索引:步长( leftIndex:rightIndex:step)
- 切片的左索引可以取出,右索引不可取出(左闭右开区间)
- 步长为负数时,左索引必须大于右索引
- 步长为正数时,从左向右取数据,步长为负数时,从右往左取数据
3、加法
序列可以进行加法操作。
s = "hello Python!"
print(s + s) # hello Python!hello Python!
nums = ['hello', 'Python', '!']
print(nums + nums) # ['hello', 'Python', '!', 'hello', 'Python', '!']
a = (1, 2, 3, 4, 5)
print(a + a) # (1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
【注】 序列的加法 必须是两个数据类型相同的才能进行加法操作
如下:
s = "hello Python!"
a = (1, 2, 3, 4, 5)
print(a + s)
'''
Traceback (most recent call last):
File "test.py", line 9, in <module>
print(a + s)
~~~^~~
TypeError: can only concatenate tuple (not "str") to tuple
'''
4、乘法
序列还可以进行乘法操作。
s = "hello Python!"
print(s * 2) # hello Python!hello Python!
nums = ['hello', 'Python', '!']
print(nums * 2) # ['hello', 'Python', '!', 'hello', 'Python', '!']
a = (1, 2, 3, 4, 5)
print(a * 2) # (1, 2, 3, 4, 5, 1, 2, 3, 4, 5)