如何从某个元素开始循环列表?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (50)

假设我有一个列表:

l = [1, 2, 3, 4]

我想循环通过它。通常情况下,它会做这样的事情,

1, 2, 3, 4, 1, 2, 3, 4, 1, 2...

我希望能够在循环中的某个点开始,不一定是索引,但可能匹配一个元素。假设我想从列表中的任何元素开始==4,那么输出结果是,

4, 1, 2, 3, 4, 1, 2, 3, 4, 1...

我怎样才能做到这一点?

提问于
用户回答回答于

itertools模块提供了所有必要的功能。

from itertools import cycle, islice, dropwhile

L = [1, 2, 3, 4]

cycled = cycle(L)  # cycle thorugh the list 'L'
skipped = dropwhile(lambda x: x != 4, cycled)  # drop the values until x==4
sliced = islice(skipped, None, 10)  # take the first 10 values

result = list(sliced)  # create a list from iterator
print(result)

输出:

[4, 1, 2, 3, 4, 1, 2, 3, 4, 1]
用户回答回答于

使用算术运算mod符。假设你从位置开始k,那么k应该像这样更新:

k = (k + 1) % len(l)

如果你想从一个特定的元素开始,而不是索引,你可以随时查找它。

所属标签

可能回答问题的人

  • EatRice

    16 粉丝0 提问138 回答
  • 学生

    8 粉丝476 提问522 回答
  • 富有想象力的人

    5 粉丝0 提问344 回答
  • 最爱开车啦

    9 粉丝503 提问1.6K 回答

扫码关注云+社区

领取腾讯云代金券