作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果遍历事件列表,我怎样才能在特定条件下停止并开始向后遍历列表。例如
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/
我是一名优秀的程序员,十分优秀!