如何在python中将列表与子列表合并为一个列表

如何在python中将列表与子列表合并为一个列表,python,list,Python,List,是否有一种快速简单的方法来转换列表(假设列表长度相同): 使用此表单将子列表合并为一个: list = [ [1, 'a', 'orange'], [2, 'b', 'apple'], [3, 'c', 'banana'], [4, 'd', 'kiwi'] ] 或者最终 list = [ {'number': 1, 'letter': 'a', 'fruit': 'oranges'}, {'number': 2,

是否有一种快速简单的方法来转换列表(假设列表长度相同):

使用此表单将子列表合并为一个:

list = [ [1, 'a', 'orange'], 
         [2, 'b', 'apple'], 
         [3, 'c', 'banana'], 
         [4, 'd', 'kiwi'] ]
或者最终

list = [ {'number': 1, 'letter': 'a', 'fruit': 'oranges'}, 
         {'number': 2, 'letter': 'b', 'fruit': 'apple'}, 
         {'number': 3, 'letter': 'c', 'fruit': 'banana'}, 
         {'number': 4, 'letter': 'd', 'fruit': 'kiwi'} ]

还是必须使用多个循环?

您可以使用内置的
zip
功能。 对于第一个,只需将它们压缩在一起,然后使用map函数将内部元组转换为列表,然后使它们成为列表

范例-

numbers = [1, 2, 3, 4]
letters = ['a', 'b', 'c', 'd']
fruits = ['orange', 'apple', 'banana', 'kiwi']
>>> list(map(list, zip(numbers,letters,fruits)))
[[1, 'a', 'orange'], [2, 'b', 'apple'], [3, 'c', 'banana'], [4, 'd', 'kiwi']]
请注意,对于Python2.x,您不需要围绕
map(…)
函数的
list(…)
函数,因为它返回list,但在Python3.x中
map(…)
函数返回一个生成器,因此如果需要list,您需要将其转换为list

对于第二个,您可以使用列表理解和zip函数,如下所示-

>>> list({'number':x,'letter':y,'fruit':z} for x,y,z in zip(numbers,letters,fruits))
[{'number': 1, 'letter': 'a', 'fruit': 'orange'}, {'number': 2, 'letter': 'b', 'fruit': 'apple'}, {'number': 3, 'letter': 'c', 'fruit': 'banana'}, {'number': 4, 'letter': 'd', 'fruit': 'kiwi'}]

您可以使用内置的
zip
功能。 对于第一个,只需将它们压缩在一起,然后使用map函数将内部元组转换为列表,然后使它们成为列表

范例-

numbers = [1, 2, 3, 4]
letters = ['a', 'b', 'c', 'd']
fruits = ['orange', 'apple', 'banana', 'kiwi']
>>> list(map(list, zip(numbers,letters,fruits)))
[[1, 'a', 'orange'], [2, 'b', 'apple'], [3, 'c', 'banana'], [4, 'd', 'kiwi']]
请注意,对于Python2.x,您不需要围绕
map(…)
函数的
list(…)
函数,因为它返回list,但在Python3.x中
map(…)
函数返回一个生成器,因此如果需要list,您需要将其转换为list

对于第二个,您可以使用列表理解和zip函数,如下所示-

>>> list({'number':x,'letter':y,'fruit':z} for x,y,z in zip(numbers,letters,fruits))
[{'number': 1, 'letter': 'a', 'fruit': 'orange'}, {'number': 2, 'letter': 'b', 'fruit': 'apple'}, {'number': 3, 'letter': 'c', 'fruit': 'banana'}, {'number': 4, 'letter': 'd', 'fruit': 'kiwi'}]

您可以使用内置的
zip
功能。 对于第一个,只需将它们压缩在一起,然后使用map函数将内部元组转换为列表,然后使它们成为列表

范例-

numbers = [1, 2, 3, 4]
letters = ['a', 'b', 'c', 'd']
fruits = ['orange', 'apple', 'banana', 'kiwi']
>>> list(map(list, zip(numbers,letters,fruits)))
[[1, 'a', 'orange'], [2, 'b', 'apple'], [3, 'c', 'banana'], [4, 'd', 'kiwi']]
请注意,对于Python2.x,您不需要围绕
map(…)
函数的
list(…)
函数,因为它返回list,但在Python3.x中
map(…)
函数返回一个生成器,因此如果需要list,您需要将其转换为list

对于第二个,您可以使用列表理解和zip函数,如下所示-

>>> list({'number':x,'letter':y,'fruit':z} for x,y,z in zip(numbers,letters,fruits))
[{'number': 1, 'letter': 'a', 'fruit': 'orange'}, {'number': 2, 'letter': 'b', 'fruit': 'apple'}, {'number': 3, 'letter': 'c', 'fruit': 'banana'}, {'number': 4, 'letter': 'd', 'fruit': 'kiwi'}]

您可以使用内置的
zip
功能。 对于第一个,只需将它们压缩在一起,然后使用map函数将内部元组转换为列表,然后使它们成为列表

范例-

numbers = [1, 2, 3, 4]
letters = ['a', 'b', 'c', 'd']
fruits = ['orange', 'apple', 'banana', 'kiwi']
>>> list(map(list, zip(numbers,letters,fruits)))
[[1, 'a', 'orange'], [2, 'b', 'apple'], [3, 'c', 'banana'], [4, 'd', 'kiwi']]
请注意,对于Python2.x,您不需要围绕
map(…)
函数的
list(…)
函数,因为它返回list,但在Python3.x中
map(…)
函数返回一个生成器,因此如果需要list,您需要将其转换为list

对于第二个,您可以使用列表理解和zip函数,如下所示-

>>> list({'number':x,'letter':y,'fruit':z} for x,y,z in zip(numbers,letters,fruits))
[{'number': 1, 'letter': 'a', 'fruit': 'orange'}, {'number': 2, 'letter': 'b', 'fruit': 'apple'}, {'number': 3, 'letter': 'c', 'fruit': 'banana'}, {'number': 4, 'letter': 'd', 'fruit': 'kiwi'}]

这是第一个很好的例子:

>>> a = [1, 2, 3, 4]
>>> b = ['a', 'b', 'c', 'd']
>>> c = ['orange', 'apple', 'banana', 'kiwi']
>>> [[x, y, z] for x, y, z in zip(a, b, c)]
[[1, 'a', 'orange'], [2, 'b', 'apple'], [3, 'c', 'banana'], [4, 'd', 'kiwi']]

这是第一个很好的例子:

>>> a = [1, 2, 3, 4]
>>> b = ['a', 'b', 'c', 'd']
>>> c = ['orange', 'apple', 'banana', 'kiwi']
>>> [[x, y, z] for x, y, z in zip(a, b, c)]
[[1, 'a', 'orange'], [2, 'b', 'apple'], [3, 'c', 'banana'], [4, 'd', 'kiwi']]

这是第一个很好的例子:

>>> a = [1, 2, 3, 4]
>>> b = ['a', 'b', 'c', 'd']
>>> c = ['orange', 'apple', 'banana', 'kiwi']
>>> [[x, y, z] for x, y, z in zip(a, b, c)]
[[1, 'a', 'orange'], [2, 'b', 'apple'], [3, 'c', 'banana'], [4, 'd', 'kiwi']]

这是第一个很好的例子:

>>> a = [1, 2, 3, 4]
>>> b = ['a', 'b', 'c', 'd']
>>> c = ['orange', 'apple', 'banana', 'kiwi']
>>> [[x, y, z] for x, y, z in zip(a, b, c)]
[[1, 'a', 'orange'], [2, 'b', 'apple'], [3, 'c', 'banana'], [4, 'd', 'kiwi']]


对于数值来说,使用numpy(将是vstack((数字、字母、水果)).T)很容易,但是numpy不会为任意列表生成合适的解。@stevori我希望您的意思是“使用
numpy
没有合适的解”。当然。我只是澄清了一下。对于数值数据,numpy解决方案通常比下面的通用答案更受欢迎。好的,谢谢。在我的真实代码中,我有数值(大部分是浮点数)。为什么我的问题是重复的?“如何从多维数组中提取列?”这一主题并没有回答我的问题……对于数值来说,使用numpy(可能是vstack((数字、字母、水果)).T)很容易,但是numpy对任意列表没有合适的解决方案。@stevori我希望你的意思是“使用
numpy
没有合适的解决方案”。当然。我只是澄清了一下。对于数值数据,numpy解决方案通常比下面的通用答案更受欢迎。好的,谢谢。在我的真实代码中,我有数值(大部分是浮点数)。为什么我的问题是重复的?“如何从多维数组中提取列?”这一主题并没有回答我的问题……对于数值来说,使用numpy(可能是vstack((数字、字母、水果)).T)很容易,但是numpy对任意列表没有合适的解决方案。@stevori我希望你的意思是“使用
numpy
没有合适的解决方案”。当然。我只是澄清了一下。对于数值数据,numpy解决方案通常比下面的通用答案更受欢迎。好的,谢谢。在我的真实代码中,我有数值(大部分是浮点数)。为什么我的问题是重复的?“如何从多维数组中提取列?”这一主题并没有回答我的问题……对于数值来说,使用numpy(可能是vstack((数字、字母、水果)).T)很容易,但是numpy对任意列表没有合适的解决方案。@stevori我希望你的意思是“使用
numpy
没有合适的解决方案”。当然。我只是澄清了一下。对于数值数据,numpy解决方案通常比下面的通用答案更受欢迎。好的,谢谢。在我的真实代码中,我有数值(大部分是浮点数)。为什么我的问题是重复的?主题“如何从多维数组中提取列?”并没有回答我的问题…可以编辑,很高兴知道。我使用Python2.7.Ok进行编辑,很高兴知道。我使用Python2.7.Ok进行编辑,很高兴知道。我使用Python2.7.Ok进行编辑,很高兴知道。我使用Python2.7。