简体   繁体   English

从Python中的两个列表创建(嵌套)列表

[英]Create (nested) List from two Lists in Python

Hello I would like to create an Array from two Arrays but I do not want to create this new Array, with append() or extend(). 您好我想从两个Arrays创建一个Array,但我不想用append()或extend()创建这个新的Array。

Input arrays have the same number of rows and columns: 输入数组具有相同的行数和列数:

listone = [1,2,3]
listtwo = [4,5,6]

Outcome we expect: 我们期望的结果:

mergedlist = [[1,4],[2,5],[3,6]]

It can't be done via 它不能通过

mergedlist = listone.append(listtwo) or mergedlist = listone.extend(listtwo)

I would like to get 我想得到

mergedlist = [[1,4],[2,5],[3,6]]

How can I get the desired output? 如何获得所需的输出?

This is a simple example to understand, real one has 14 files and 35 rows and the 61 Arrays. 这是一个简单的例子来理解,真正的一个有14个文件,35行和61个数组。


For one dimensional the answer down is ok, but when you have array of list 对于一维,答案是可以的,但是当你有列表数组时

listone = [[1,2,3],[1,2,3],[1,2,3]]
listtwo = [4,5,6]

I would like to get 我想得到

result = [[1,2,3,4],[1,2,3,5],[1,2,3,6]]

when I work with merged = map(list, zip(listone, listtwo)) 当我使用merged = map(list,zip(listone,listtwo))

My result is [[[1, 2, 3], 4], [[1, 2, 3], 5], [[1, 2, 3], 6]] that is Bad

Use the builtin zip function. 使用内置的zip功能。 It's exactly what you want. 这正是你想要的。 From the python manuals: 从python手册:

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> zipped
[(1, 4), (2, 5), (3, 6)]

Or if you want a list of lists, instead of a list of tuples, you use zip with a list comprehension: 或者如果你想要一个列表列表,而不是一个元组列表,你可以使用带有列表zip

>>> zipped = [list(t) for t in zip(x, y)]
>>> zipped
[[1, 4], [2, 5], [3, 6]]

Try: 尝试:

listone = [1,2,3]
listtwo = [4,5,6]

merged = map(list, zip(listone, listtwo))

zip(listone, listtwo) will return a list of tuples. zip(listone, listtwo)将返回元组列表。 Since you want a list of lists you need to convert each tuple to a list. 由于您需要列表列表,因此需要将每个元组转换为列表。 map(list, list_of_tuples) call will do exactly that. map(list, list_of_tuples)调用就是这样做的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM