一起遍历列表和列表

时间:2014-11-07 06:39:54

标签: python list

我有一个列表列表,以及一个列表,其元素可以具有列表

的属性
a =  [ob1,ob2,ob3,ob4,ob52,ob7,ob8,ob10]
ob52.list = [ob5,ob6]
ob82.list = [ob8,ob9]

和一个清单

b= [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10]

两个列表都包含10个元素,即他们总是包含相同数量的元素。

如果所有i ob[i].b = b[i],我想要做的是ob.has_list == False 如果ob有一个列表,则为ob[i].list的每个元素分配相应的b[i]

我已经解决了这个问题(相当C'ish),并且想知道是否有更简单的方法。

i=0;k=0;j=0
for k in xrange(0,len(a)):
    if k<i:
        continue
    if a[j].has_list:
        for q in a[j].list:
            q.b = b[i]
            i+=1
    else:
        a[j].b = b[i]
        i+=1
    j+=1

1 个答案:

答案 0 :(得分:1)

由于两个列表在a展平时具有相同的长度,您可以展平a,然后您可以使用zip

import itertools

flat_a = itertools.chain.from_iterable(
            (e.list if e.has_list else (e,))
                for e in a)

for xa, xb in zip(flat_a, b):
    xa.b = xb