gpt4 book ai didi

python - 我怎样才能在遍历列表的中间暂停并开始倒退?

转载 作者:行者123 更新时间:2023-11-28 22:26:27 24 4
gpt4 key购买 nike

如果遍历事件列表,我怎样才能在特定条件下停止并开始向后遍历列表。例如

for p in pattern:
for event in p:
if event == 1:
# Iterate backwards through p from current position until you reach the last event that equals 1

我想你可以使用像reversed(p)这样的东西,但那会从p的末尾开始,我想从当前开始看位置。

最佳答案

Python 的 for 循环并不像您期望的那样工作。当您在这里调用 for 时,Python 实际上是将 p[i] 分配给变量 event 的新副本。它没有要引用的下一个对象或上一个对象。

如果你想知道你当前的位置,你需要使用 enumerate() 函数。

for index, event in enumerate(p):
print(index, event)

这将允许您中断循环或创建另一个子循环,然后使用 reversed() 或类似的东西从指定点重新遍历它。

你的代码看起来像这样:

for p in pattern:
for index, event in enumerate(p):
if event == 1:
for event2 in reversed(p[:index]):
# do the things

我假设您不需要列举您的逆转。如果这样做,将最里面的 for 语句更改为 for in enumerate(reversed(p[:index]): 应该可以解决问题。

我使用了一个不同的事件变量,以防您想要引用最初将您发送到逆转的变量。如果您不需要该功能,则没有必要。

选项 2:

另一种方法(感谢 @Scott)可以使用 p.index(event) 值来完成。它不那么 pythonic 并且会打破你现有的循环(也许这很重要也许不重要),但它确实有效。

for p in pattern:
for event in p:
if event == 1:
new_start = p.index(event)
for p in reversed(p[:new_start]):

关于python - 我怎样才能在遍历列表的中间暂停并开始倒退?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44808284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com