如何在开始大于停止的情况下分割列表

2024-09-26 18:11:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从头到尾分割一个列表,但是让迭代继续超过最后一个元素,并一直循环到第一个元素。然后继续前进直到停止。在

我试过这样的列表切片:

    list_a = list(range(8))
    reordered_list = list_a[5:2]

但只收到一张空名单:

^{pr2}$

理想情况下,我希望列表打印出来:

    [5, 6, 7, 0, 1]

基本上,我希望遍历“整圈”并在索引0处继续迭代。在


Tags: 元素列表情况切片rangelist理想名单
3条回答
def parse(input, start, stop):
    partial_list = input[:stop]
    return partial_list[start:] + partial_list[:start]

full_list = range(8)
parse(full_list, 2, 5)  # Outputs [2, 3, 4, 0, 1]

编辑:你的问题有些不一致,如果可能,请重写。在

当你给切片索引如下-

list_a[5:2]

它将以1为一步,由于开始是在停止之后,所以这些索引之间没有元素(切片不会自行循环)。在

您应该使用modulus(remainment)运算符和for循环或列表理解来获得所需的列表。示例-

^{pr2}$

示例/演示-

^{3}$

这样做:

def foo(list_a, start, stop):
    if (start <= stop):
        return list_a[start:stop]
    else:
        return list_a[start:] + list_a[:stop]

输出:

^{pr2}$

相关问题 更多 >

    热门问题