对多个可迭代对象的列表理解迭代

时间:2019-11-02 17:35:05

标签: python

假设我有以下三个列表:

letters = ['a', 'b', 'c']

numbers = ['1', '2', '3']

letters_numbers = ['a1', 'b2', 'c3']

这三个列表是使用列表理解预先生成的,因此没有预先定义。 因此,这些列表中的项目数将根据用户输入而有所不同。 但是每个列表中的项目数始终等于其他两个列表中的项目数。

现在,我想使用这三个列表来创建一个由LISTS而不是元组组成的大列表,如下所示:

big_list = [['a', '1', 'a1'], ['b', '2', 'b2'], ['c', '3', 'c3']]

我已经尝试过这样做:

big_list = [[letter, number, letter_number] for [letter, number, letter_number] in [letters, numbers, letters_numbers]]

这是给我的:

big_list = [['a', 'b', 'c'], ['1', '2', '3'], ['a1', 'b2', 'c3']]

您能告诉我我如何实现这一目标吗? 我特别希望使用列表理解来达到此结果。

但是,如果还有另一种方法可以实现,那么列表理解方法将受到高度赞赏。

3 个答案:

答案 0 :(得分:1)

您可以使用邮政编码吗?

>>> [[letter, number, letter_and_number] for letter, number, letter_and_number in zip(letters, numbers, letters_numbers)]
[['a', '1', 'a1'], ['b', '2', 'b2'], ['c', '3', 'c3']]

答案 1 :(得分:1)

通常使用zip()函数将值随意添加到列表中。

为了将元组(zip函数的输出)转换为列表,您可以使用列表理解,如线程Zip with list output instead of tuple

big_list = [list(a) for a in zip(letters, numbers, letters_numbers)]

答案 2 :(得分:1)

我能够使用以下方法解决此问题:



a = [1, 2, 3]

b = [4, 5, 6]

c = [7, 8, 9]

d = [[x,y,z] for x in a for y in b for z in c]

print(d)


现在我想知道是否有更好的方法?