对于下面的示例,在展开列表时是否有python方法?

对于下面的示例,在展开列表时是否有python方法?,python,Python,例如: list1=['a','b'] list2 = [['apple', 'pineapple'], ['orange', 'grapes']] 我想得到这样的东西: [ ['a', 'apple'], ['a', 'pineapple'], ['b', 'orange'],, ['b', 'grapes'] ] 我在itertools.izip(list1,list2)中尝试了i1,i2的[[i1,i2],但这将给我以下信息: [ ['a',['apple', 'pineapple']

例如:

list1=['a','b']
list2 = [['apple', 'pineapple'], ['orange', 'grapes']]
我想得到这样的东西:

[ ['a', 'apple'], ['a', 'pineapple'], ['b', 'orange'],, ['b', 'grapes'] ]
我在itertools.izip(list1,list2)中尝试了i1,i2的
[[i1,i2]
,但这将给我以下信息:

[ ['a',['apple', 'pineapple'], ['b', ['orange', 'grapes']] ]

我知道为什么它是错误的,因为i2是一个列表类型的元素,但我不知道在几次失败的尝试之后如何以更为通俗的方式解决这个问题。我完全可以逐行迭代并使用for循环和
append()

您需要一个嵌套的理解来打开内部列表项:

>>> [[i, x] for i, j in zip(list1, list2) for x in j]
[['a', 'apple'], ['a', 'pineapple'], ['b', 'orange'], ['b', 'grapes']]

需要嵌套理解才能展开内部列表项:

>>> [[i, x] for i, j in zip(list1, list2) for x in j]
[['a', 'apple'], ['a', 'pineapple'], ['b', 'orange'], ['b', 'grapes']]
没有itertools

final = []
for i,k in enumerate(list1):
    for j in list2[i]:
        final.append([k,j])
print final

[['a', 'apple'], ['a', 'pineapple'], ['b', 'orange'], ['b', 'grapes']]
一艘班轮:

[[k,j] for j in list2[i] for i,k in enumerate(list1)]
没有itertools

final = []
for i,k in enumerate(list1):
    for j in list2[i]:
        final.append([k,j])
print final

[['a', 'apple'], ['a', 'pineapple'], ['b', 'orange'], ['b', 'grapes']]
一艘班轮:

[[k,j] for j in list2[i] for i,k in enumerate(list1)]

把它也做成一行;-)补充。希望有帮助。也做一行;-)补充说。希望这有帮助。