Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以x[0:4:-1]的形式从索引中切片元组_Python_Tuples - Fatal编程技术网

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切片语法不仅仅适用于元组;字符串和列表支持完全相同的语法