Python 以x[0:4:-1]的形式从索引中切片元组
Python 以x[0:4:-1]的形式从索引中切片元组,python,tuples,Python,Tuples,x=(1,2,3,4) 这里,x[0:4:-1]给出一个空的元组。为什么会这样? 我想它只会给出一个反向元组(4,3,2,1)…您要求的是所有值,从0开始,在4之前结束,一次按-1计数。这是没有价值的 你要做的是从3开始,在-1之前结束,一次按-1计数。除了……你不能把-1放在那里,因为那意味着“从末尾算起1”。所以,你必须写“从3开始,当你用尽整个序列时结束,一次按-1计数”,如下所示: x[3::-1] def slicify(sequence, start, end, step):
x=(1,2,3,4)
这里,x[0:4:-1]
给出一个空的元组。为什么会这样?
我想它只会给出一个反向元组(4,3,2,1)
…您要求的是所有值,从0开始,在4之前结束,一次按-1计数。这是没有价值的
你要做的是从3开始,在-1之前结束,一次按-1计数。除了……你不能把-1
放在那里,因为那意味着“从末尾算起1”。所以,你必须写“从3开始,当你用尽整个序列时结束,一次按-1计数”,如下所示:
x[3::-1]
def slicify(sequence, start, end, step):
if start < 0: start += len(sequence)
if end < 0: end += len(sequence)
result = []
while (start < end if step > 0 else start > end):
result.append(sequence[start])
start += step
return result
或者,更简单地说:
x[::-1]
将切片转换为显式循环可能有助于您的理解。它看起来像这样:
x[3::-1]
def slicify(sequence, start, end, step):
if start < 0: start += len(sequence)
if end < 0: end += len(sequence)
result = []
while (start < end if step > 0 else start > end):
result.append(sequence[start])
start += step
return result
def slicify(顺序、开始、结束、步骤):
如果start<0:start+=len(序列)
如果end<0:end+=len(序列)
结果=[]
同时(如果步骤>0,则开始<结束,否则开始>结束):
result.append(序列[开始])
开始+=步进
返回结果
但这只是大致正确。准确定义见注释5下的文件:
步骤为k
的s
从i
到j
的切片定义为索引为x=i+n*k
的项目序列,因此0您要求的是从0开始,在4之前结束,一次按-1计数的所有值。这是没有价值的
你要做的是从3开始,在-1之前结束,一次按-1计数。除了……你不能把-1
放在那里,因为那意味着“从末尾算起1”。所以,你必须写“从3开始,当你用尽整个序列时结束,一次按-1计数”,如下所示:
x[3::-1]
def slicify(sequence, start, end, step):
if start < 0: start += len(sequence)
if end < 0: end += len(sequence)
result = []
while (start < end if step > 0 else start > end):
result.append(sequence[start])
start += step
return result
或者,更简单地说:
x[::-1]
将切片转换为显式循环可能有助于您的理解。它看起来像这样:
x[3::-1]
def slicify(sequence, start, end, step):
if start < 0: start += len(sequence)
if end < 0: end += len(sequence)
result = []
while (start < end if step > 0 else start > end):
result.append(sequence[start])
start += step
return result
def slicify(顺序、开始、结束、步骤):
如果start<0:start+=len(序列)
如果end<0:end+=len(序列)
结果=[]
同时(如果步骤>0,则开始<结束,否则开始>结束):
result.append(序列[开始])
开始+=步进
返回结果
但这只是大致正确。准确定义见注释5下的文件:
步骤为k
的s
从i
到j
的切片定义为索引为x=i+n*k
的项目序列,因此0您需要省略开始和结束,或者颠倒开始和结束:
x[::-1] # (4, 3, 2, 1)
x[3:0:-1] # (4, 3, 2)
x[3::-1] # (4, 3, 2, 1)
x[3:-5:-1] # (4, 3, 2, 1)
端点不包括在内,因此使用[3:0:-1]
切片只返回三个元素。最后一个示例使用从元组长度中减去的负值,以端点-1
结束
使用负跨步意味着Python想要倒数,从0开始你永远不会得到4
请注意,Python切片语法不仅仅适用于元组;字符串和列表支持完全相同的语法。您需要省略开头和结尾,或者颠倒开头和结尾:
x[::-1] # (4, 3, 2, 1)
x[3:0:-1] # (4, 3, 2)
x[3::-1] # (4, 3, 2, 1)
x[3:-5:-1] # (4, 3, 2, 1)
端点不包括在内,因此使用[3:0:-1]
切片只返回三个元素。最后一个示例使用从元组长度中减去的负值,以端点-1
结束
使用负跨步意味着Python想要倒数,从0开始你永远不会得到4
请注意,Python切片语法不仅仅适用于元组;字符串和列表支持完全相同的语法