Python,如何从for循环中的数组(列表)中获取下一个项目

时间:2016-06-19 16:01:17

标签: python list

我有一个数组(列表)有时间,现在我需要确定重叠的时间是否在此列表的两个连续时间之间。

duurSeq=[11,16,22,29]
nu = time.time()
verstreken_tijd = nu - starttijd
for t in duurSeq:
   if (verstreken_tijd > t ) and (verstreken_tijd < **t_next** ):
      doSomething():

我的问题是:如何获取t_next(for循环中数组中的下一项)

4 个答案:

答案 0 :(得分:2)

试试这个,

duurSeq=[11,16,22,29]
for c, n in zip(duurSeq, duurSeq[1:]):
    if (verstreken_tijd > c) and (verstreken_tijd < n):
        doSomething():

有关一般方法,请参阅Iterate a list as pair (current, next) in Python

from itertools import tee, izip
def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return izip(a, b)

# Demo
l = [11, 16, 22, 29]
for c, n in pairwise(l):
    print(c, n)

# Output
(11, 16)
(16, 22)
(22, 29)

答案 1 :(得分:0)

听起来你需要一些指针算法。请参阅here以获取一个很好的例子。

TL / DR你可以通过告诉解释器向sizeof(int)移动1个块来移动到数组中的下一个项目。基本上取内存中的下一个整数。这只是因为您知道数组中元素的大小。

答案 2 :(得分:0)

在索引上使用foor循环而不是元素

duurSeq = [11,16,22,29]
nu = time.time()
verstreken_tijd = nu - starttijd

for t in range(len(duurSeq)-1):
   if verstreken_tijd > duurSeq[i] and verstreken_tijd < duurSeq[i+1]:
      doSomething():

答案 3 :(得分:0)

看起来你想要访问for循环中的数组索引。

for index, element in enumerate(duurSeq):
    # Use duurSeq[index] to access element at any position