假设我有以下三个列表:
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']]
您能告诉我我如何实现这一目标吗? 我特别希望使用仅列表理解来达到此结果。
但是,如果还有另一种方法可以实现,那么列表理解方法将受到高度赞赏。
答案 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)
现在我想知道是否有更好的方法?