Python 在多个ITerable上迭代的列表理解

Python 在多个ITerable上迭代的列表理解,python,Python,假设我有以下三个列表: letters = ['a', 'b', 'c'] numbers = ['1', '2', '3'] letters_numbers = ['a1', 'b2', 'c3'] big_list = [['a', '1', 'a1'], ['b', '2', 'b2'], ['c', '3', 'c3']] 这三个列表是使用列表理解预先生成的,所以没有预定义的。 因此,这些列表中的项目数量将根据用户输入而有所不同。 但每个列表中的项目数始终等于其他两个列表中的项目

假设我有以下三个列表:

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

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

letters_numbers = ['a1', 'b2', 'c3']
big_list = [['a', '1', 'a1'], ['b', '2', 'b2'], ['c', '3', 'c3']]
这三个列表是使用列表理解预先生成的,所以没有预定义的。 因此,这些列表中的项目数量将根据用户输入而有所不同。 但每个列表中的项目数始终等于其他两个列表中的项目数

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

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

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

letters_numbers = ['a1', 'b2', 'c3']
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']]
你能告诉我怎样才能做到这一点吗? 我特别希望只使用列表理解来达到这个结果

但是,如果有其他方法可以实现这一点,它将与列表理解方法一起受到高度赞赏。

您能使用zip吗

>>> [[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']]
你会用拉链吗

>>> [[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']]

通常使用zip函数将值按您想要的方式放入列表中

为了将zip函数的元组输出转换为列表,您可以使用列表理解,如线程所示


通常使用zip函数将值按您想要的方式放入列表中

为了将zip函数的元组输出转换为列表,您可以使用列表理解,如线程所示


我能够通过以下方式解决此问题:



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)



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

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



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)



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

Simpler:[listx for x in zip…]。没有必要解压zip返回的元组。或者更简单:如果元组列表令人满意,则列出元组、数字、字母和数字。chepner,请您解释一下使用上述示例的原因。它需要一个列表。simpler:[listx for x in zip…]。没有必要解压zip返回的元组。或者更简单:ListZipleters、数字、字母和数字,如果元组列表令人满意。chepner,你能解释一下使用上述示例吗?它需要一个列表列表。不完全是,因为这会生成元组列表,而不是列表列表。zip生成元组,是不可变的。我更新了答案以获取列表输出列表而不是元组列表不完全,因为这会生成元组列表,而不是列表列表。ZIP生成不可变的元组。我更新了答案以获取列表输出列表而不是元组列表。这会生成无效结果。[a,2,c3]不在大列表中这会产生无效结果。[a,2,c3]不在大名单中