如何在python循环中将元素n中的列表切成末尾?

时间:2018-07-17 17:06:38

标签: python slice

我希望在以下位置对该主题进行较小的澄清:  How to slice a list from an element n to the end in python?

我想在一个循环中切片一个列表,以便循环的最后一次迭代包括列表的最后一个元素。到目前为止,我发现这样做的唯一方法(基于另一个线程的答案)如下:

>>> x = list(range(1,11))
>>> for i in range(0,4):
...     x[i:-3+i if -3+i != 0 else None]

我期望在每次迭代中x的值是:

[1, 2, 3, 4, 5, 6, 7]
[2, 3, 4, 5, 6, 7, 8]
[3, 4, 5, 6, 7, 8, 9]
[4, 5, 6, 7, 8, 9, 10]

它可以工作,但是我的解决方案真的是完成此任务的最Python风格的方法吗?

2 个答案:

答案 0 :(得分:4)

完成一项简单的任务会给您带来很多麻烦。 怎么样

<input type="text" class="form-control" name="email" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Email or Username">

这将提供相同的输出,并且更易于阅读。您原始方法的困难似乎是在解决列表结尾是元素-1后面1的问题,但是您不能将其指定为元素0。您可以单独使用正索引来解决此问题。

答案 1 :(得分:0)

我不确定您要问的是什么,但是我认为使用更简单的方法也可以:

x = list(range(1, 11))
slice_length = 7
number_of_iterations = 4

# All you had to do was to first iterate
for i in range(number_of_iterations):
    # Then slice the list from i to i+7 in your case
    print(x[i:i+slice_length])

# Output:
# [1, 2, 3, 4, 5, 6, 7]
# [2, 3, 4, 5, 6, 7, 8]
# [3, 4, 5, 6, 7, 8, 9]
# [4, 5, 6, 7, 8, 9, 10]