Python中slice操作
我们已知python中列表,数组等都支持切片操作。
切片操作基本表达式:
object[start_index : end_index : step]
重要步骤
- 首先我们观察step正负,如果为正从前往后,如果为负从后往前。
如果step > 0:
如果start_index < end_index 正常输出
如果 step < 0:
如果start_index > end_index 正常输出 - 如果没有具体给出step,默认为1
- 有时候不仅仅没有给出step,start_index 或者end_index 也仅仅给出一个
如果step > 0:
如果start_index 给出:end_index 默认是最大
如果end_index 给出:start_index 默认是最小
如果step < 0:
如果start_index 给出:end_index 默认是最小
如果end_index 给出:start_index 默认是最大
#!/usr/bin/env python
# coding: utf-8
# In[4]:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# In[2]:
print(a[:]) # 从左往右
print(a[: :]) # 从左往右
print(a[: : -1]) # 从右往左
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
# In[3]:
print(a[1:5:-1])
# step=-1,决定了从右往左取值,而start_index=1到end_index=5决定了从左往右取值,互相矛盾。
[]
# In[4]:
print(a[:5] )
# step=1,从左往右取值,从“起点”开始一直取到end_index=5。
[0, 1, 2, 3, 4]
# In[5]:
print(a[:5:-1])
# step=-1,从右往左取值,从“终点”开始一直取到end_index=5。
[9, 8, 7, 6]
# In[6]:
print(a[5:])
[5, 6, 7, 8, 9]
# In[7]:
print(a[5::-1] )
[5, 4, 3, 2, 1, 0]
# In[8]:
print(a[-1:-5])
# step=1,从左往右取值,而start_index=-1到end_index=-5决定了从右往左取值,两者矛盾。
print(a[-1:-5:-1])
# step=-1,从右往左取值,start_index=-1到end_index=-5同样是从右往左取值。
[]
[9, 8, 7, 6]
# In[9]:
print(a[5:])
# step=1,从左往右取值,从start_index=5开始,一直取到“终点”。
print(a[5::-1] )
# step=-1,从右往左取值,从start_index=5开始,一直取到“起点”。
[5, 6, 7, 8, 9]
[5, 4, 3, 2, 1, 0]
# In[1]:
for i in range(1,100)[2::3][-10:]:
print(i, end=' ')
#利用range函数生成1-99的整数,然后取3的倍数,再取最后十个。
72 75 78 81 84 87 90 93 96 99
# In[2]:
for i in range(1,100)[2::3][:10]:
print(i, end=' ')
#同样是取3的倍数,不过是取前十个。
3 6 9 12 15 18 21 24 27 30
# In[5]:
a[3:3] = ['A','B','C']
print(a)
[0, 1, 2, 'A', 'B', 'C', 3, 4, 5, 6, 7, 8, 9]
# In[6]:
a[3] = ['A','B']
print(a)
[0, 1, 2, ['A', 'B'], 'B', 'C', 3, 4, 5, 6, 7, 8, 9]
# In[7]:
print(a[:])
#将上面替换后的输出复制
[0, 1, 2, ['A', 'B'], 'B', 'C', 3, 4, 5, 6, 7, 8, 9]
# In[8]:
# 1.取偶数位置
print(a[::2])
# 2.取奇数位置
print(a[1::2])
[0, 2, 'B', 3, 5, 7, 9]
[1, ['A', 'B'], 'C', 4, 6, 8]
# In[9]:
myslce = slice(5)
# In[10]:
myslce
slice(None, 5, None)
# In[13]:
a[myslce]
[0, 1, 2, ['A', 'B'], 'B']
# In[12]:
a
# In[14]:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# In[15]:
a[myslce]
[0, 1, 2, 3, 4]
# In[ ]: