【发布时间】:2020-07-22 18:41:16
【问题描述】:
这个玩具示例代表了我从模拟包解析数据时遇到的问题。我想循环遍历一个元组,如果满足特定条件,则中断循环并返回与该特定行对应的时间步长。在以下示例中,索引 0 表示这些时间步长。
from random import randint
t = list(range(1,11))
a = [randint(1, 10) for i in range(0, 10)]
b = [randint(1, 10) for i in range(0, 10)]
c = [randint(1, 10) for i in range(0, 10)]
d = [randint(1, 10) for i in range(0, 10)]
e = [randint(1, 10) for i in range(0, 10)]
for i in zip(t,a,b,c,d,e):
print (i)
(1, 8, 5, 5, 3, 4)
(2, 2, 9, 5, 9, 1)
(3, 9, 3, 1, 6, 3)
(4, 9, 6, 7, 8, 3)
(5, 2, 7, 6, 8, 10)
(6, 6, 6, 8, 9, 6)
(7, 1, 8, 1, 8, 3)
(8, 1, 1, 1, 7, 5)
(9, 6, 10, 7, 4, 6)
(10, 5, 2, 6, 3, 8)
假设我想返回数字 10 出现的第一个时间步。知道那是时间步 5 和 10 是行中的最后一个,我可以硬编码:
for i in zip(t,a,b,c,d,e):
if i[5] == 10:
print(i[0])
5
我试图以这种方式解决问题,但我不能完全弄清楚我哪里出错了,欢迎任何指针。
for i in zip(t,a,b,c,d,e):
if i[1:] == 10:
print(i[0])
【问题讨论】:
-
if 10 in i:print(i[0]);break -
谢谢普拉纳夫,不完全是。顺序很重要,这就是我使用循环的原因。即 10 可能会出现在更下方,但我只关心它的第一个实例,因为这实际上是一个时间序列
标签: python python-3.x