在切片和区间里不包含区间范围的最后一个元素是python的风格,符合其他语言里以0作为下标的传统,这样做得好处如下
栗子:
a = [1, 2, 3, 4]
print(a[0:2])
取的1、2 ;长度就是 2-0,也就是 2,这里的长度就是print(len(a[0:2]));运行的结果如下
F:\project_gitee\Test>D:/Python/Python37/python.exe f:/project_gitee/Test/pythonScripts/python_tuple.py
[1, 2]
2
栗子:
a = [1, 2, 3, 4]
print(a[:2])
print(a[2:])
指定终止点和起点,运行的结果如下
F:\project_gitee\Test>D:/Python/Python37/python.exe f:/project_gitee/Test/pythonScripts/python_tuple.py
[1, 2]
[3, 4]
可以使用 “ s[a:b:c] ” 的形式对对象中在a和b之间以c为间隔取值。c也可以为负数,负数就意味着反向取值。c也可以直接理解为步长
栗子:
s = 'class_number'
print(s[:]) # 取全部值,栗子:s[:]、s[::]
print(s[:2]) # 取两个
print(s[3::]) # 从第三个开始取到最后
print(s[::3]) # 间隔两个取值
print(s[::-1]) # 反向取全部
print(s[::-2]) # 反向间隔一个取值
指定切片取值,运行的结果如下
F:\project_gitee\Test>D:/Python/Python37/python.exe f:/project_gitee/Test/pythonScripts/python_tuple.py
class_number
cl
ss_number
csnb
rebmun_ssalc
rbu_sl
a:b:c这种用法只能作为索引或者下标在 [] 中来返回一个切片对象。
如果把切片放在赋值语句的左边,或者把它作为del操作的对象,就可以对序列进行嫁接、切除或者就地修改等操作
栗子:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a[2:5] = [20, 30]
print(a)
del a[5:7]
print(a)
a[3::2] = [11, 22]
print(a)
切片赋值后的运行结果如下
F:\project_gitee\Test>D:/Python/Python37/python.exe f:/project_gitee/Test/pythonScripts/python_tuple.py
[1, 2, 20, 30, 6, 7, 8, 9]
[1, 2, 20, 30, 6, 9]
[1, 2, 20, 11, 6, 22]
如果赋值的对象是一个切片,那么赋值语句的右侧必须是一个可迭代对象。即便只有一个值,也要把它转换成可迭代序列
栗子:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a[2:5] = 100
print(a)
切片赋值运行后的结果如下
F:\project_gitee\Test>D:/Python/Python37/python.exe f:/project_gitee/Test/pythonScripts/python_tuple.py
Traceback (most recent call last):
File "f:/project_gitee/Test/pythonScripts/python_tuple.py", line 94, in
a[2:5] = 100
TypeError: can only assign an iterable
上述中报错:TypeError: can only assign an iterable;字面意思就是只能分配一个可迭代对象
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a[2:5] = '100'
print(a)
整形修改为可迭代对象运行后的结果如下
F:\project_gitee\Test>D:/Python/Python37/python.exe f:/project_gitee/Test/pythonScripts/python_tuple.py
[1, 2, '1', '0', '0', 6, 7, 8, 9]
[] 里使用逗号分开多个索引或者切片、省略号;多用于二维、三维、四维矩阵数据操作,NumPy库就可以进行操作。
import numpy as np
arr = np.arange(12).reshape(2, 2, 3)
print(arr[:, ::2, :])
print(arr[..., 0])
多维切片和省略的运行结果如下
F:\project_gitee\Test>D:/Python/Python37/python.exe f:/project_gitee/Test/pythonScripts/python_tuple.py
[[[0 1 2]]
[[6 7 8]]]
[[0 3]
[6 9]]
多维和省略牵扯到第三方库的操作,具体使用还得可自行百度......
在python里的列表(list)、元组(tuple)、字符串(str)等序列类型都可进行切片操作......
以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,评论区留言会及时修正发布,谢谢!
未完,待续…
一直都在努力,希望您也是!