l = ['hello','hi']
a=[1,2,3,4]
b=[4,5,6,7]
for i in l:
func(x=a[index],y=b[index])
现在,当我迭代l时,在第一次迭代中,我想首先使用[0]和b [0]作为函数,然后使用[1]和b [1]作为相同的函数< / p>
在l的第二次迭代中,我想首先使用[2]和b [2]作为函数,然后使用[3]和b [3]作为相同的函数。
任何建议都将受到赞赏。
答案 0 :(得分:2)
>>> l = ['hello','hi']
>>> a=[1,2,3,4]
>>> b=[4,5,6,7]
>>> for i, val in enumerate(l):
... print '---iteration', i
... print 'l:', val
... print 'a:', a[2*i], ', b:', b[2*i]
... print 'a:', a[2*i+1], ' b:', b[2*i+1]
...
---iteration 0
l: hello
a: 1 , b: 4
a: 2 b: 5
---iteration 1
l: hi
a: 3 , b: 6
a: 4 b: 7
答案 1 :(得分:0)
您可以使用索引方法查找要迭代的列表元素的索引。使用该索引,您可以从列表中找到要传递给函数的元素。
l = ['hello','hi']
a=[1,2,3,4]
b=[4,5,6,7]
def demo(x, y):
print x, y
for i in l:
print i
idx = 2*(l.index(i))
demo(x=a[idx],y=b[idx])
demo(x=a[idx+1],y=b[idx+1])
我不想在a
调用中计算b
和demo()
的索引,而是先计算它。因为,每次计算都有O(1)
的复杂度,如果我在demo
的调用中做同样的事情(即如果我正在做demo(x=a[2*(l.index(i))],y=b[2*(l.index(i))])
),那么我结束了两次计算索引会导致O(2)
的复杂性。我以同样的方式访问列表l
两次,这也增加了复杂度计算的开销。因此,事先计算索引,访问列表l
一次,每次调用demo
时复杂度降低2倍。