列表切片

列表切片的语法

a[start:end] 从start开始到end-1结束;

a[start:] 从start开始直到末尾;

a[:end] 从头部开始直到end结束;

a[:] 复制整个列表;

从左到右时候的位置关系:

+---+---+---+---+---+---+
| P | y | t | h | o | n |
+---+---+---+---+---+---+
0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1

a[start:end:step] step 表示步长,正负号表示方向, step 默认为 +1 ,所以默认 start 和 end 是从头到尾,如果 step 为负数,则 start 表示尾,end 表示头。 start 和 end 是根据 step 来确认的。


In [2]:
a = ['Shanghai', 'Beijing', 'Hangzhou', 'Tokyo', 'Osaka']
print(a)


['Shanghai', 'Beijing', 'Hangzhou', 'Tokyo', 'Osaka']

In [3]:
b = a[0:3]

# 省略start,表示从头开始
c = a[:3]
print(b)
print(c)


['Shanghai', 'Beijing', 'Hangzhou']
['Shanghai', 'Beijing', 'Hangzhou']

In [4]:
# 省略 end,从-1 到 end
b = a[-1:]
print(b)

b = a[-3:]
print(b)


['Osaka']
['Hangzhou', 'Tokyo', 'Osaka']

In [ ]:
a = list(range(100))
print(a)

b = a[0:10]
print(b)

In [ ]:
b = a[-10:]
print(b)

In [ ]:
b = a[0:10:2]
print(b)

In [ ]:
# step 错误,不输出结果
b = a[0:10:-2]
print(b)

In [ ]:
b = a[10:0:-1]
print(b)

In [ ]:
b = a[-1:0:-5]
print(b)

b = a[-1:-6:-1]
print(b)

In [ ]:
# 列表反转

a = ['Shanghai', 'Beijing', 'Hangzhou', 'Tokyo', 'Osaka']
a.reverse()
print(a)

In [ ]:
# 使用切片来完成反转

a = ['Shanghai', 'Beijing', 'Hangzhou', 'Tokyo', 'Osaka']
b = a[::-1]
print(b)

In [ ]:
# 字符串切片操作类似列表
a = 'abcdefghi'
print(a[1:2])
print(a[3:5])
print(a[:-5:-1])