个人对于列表切片的理解:()
list_a = list(range(5)) # 结果list_a = [0, 1, 2, 3, 4]
‘’’
按照英文的解释就是from start to end,第三个参
数step官方解释是步长,也就是一步的长度,那
么切片是如何运作的?
个人答案:
while start < end:
start +=step
‘’’
#下面举例:
#Example 1:
'''
list_a从默认位置list_a[0]开始创建新的列表,其成员
依次从list_a[0]、list_a[1]...list_a[4],原理就是
start = 0, start = start + step = 0 + 1 = 1...依次如此
改变列表索引,从而创建一个新列表
'''
list_a [: len(list_a): 1]
#结果:list_a = [0, 1, 2, 3, 4]
#Example 2:
'''
list_a从指明的位置list_a[4]开始创建新的列表,其成员
依次从list_a[4]、list_a[3]...list_a[1],原理就是
start = 4, start = start + step = 4 + (-1) = 3...依次如此
改变列表索引,从而创建一个新列表,而之所以没有
0,是因为切片的原理留头不留尾。
'''
list_a[4: 0: -1] #其结果是[4, 3, 2, 1]
#Example 3:
'''
list_a从指明的位置list_a[1]开始创建新的列表,其成员
依次从list_a[1]、list_a[0]...list_a[-n],原理就是
start = 4, start = start + step = 4 + (-1) = 3...依次如此
改变列表索引,从而创建一个新列表,而之所以这个
列表最后结果为空是因为,从start值开始,永远不能
实现start+step == 2,而切片操作又不会报错,找不到
的或不存在的列表,返回的都是空列表,所以下面返回
了空列表,因为从理论上来说,该列表不存在。
'''
list_a[1: 2: -1] #其结果是[]
#Example 4:
'''
list_a从默认位置list_a[0]开始创建新的列表,其成员
依次从list_a[0]、list_a[1]...list_a[4],原理就是,step
默认等于1,start=0, end=len(list_a),然后执行start = 0,
start = start + step = 0 + 1 = 1...依次如此改变列表索引,
从而创建一个新列表
'''
list_a [::]
#结果:list_a = [0, 1, 2, 3, 4]
#Example 5:
'''
list_a从默认位置list_a[4]开始创建新的列表,其成员
依次从list_a[4]、list_a[3]...list_a[0],原理就是,step
等于-1,start=4(数据已经反过来了), end=-1,然后执
行start = 4, start = start + step = 4 + (-1) = 3...依次如
此改变列表索引,从而创建一个新列表。
至于a[-1]==a[4]你可以把这个看成是一种方便处理数据
的规定。
'''
list_a [::-1]
#结果:list_a = [4, 3, 2, 1, 0]