【问题标题】:Create (nested) List from two Lists in Python从 Python 中的两个列表创建(嵌套)列表
【发布时间】:2014-02-11 04:07:32
【问题描述】:

您好,我想从两个数组创建一个数组,但我不想使用 append() 或 extend() 创建这个新数组。

输入数组的行数和列数相同:

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

我们期望的结果:

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

无法通过

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

我想得到

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

我怎样才能得到想要的输出?

这是一个简单易懂的例子,真实的有 14 个文件和 35 行和 61 个数组。


对于一维来说,答案是可以的,但是当你有列表数组时

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

我想买

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

当我使用 merge = map(list, zip(listone, listtwo))

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

【问题讨论】:

标签: python python-2.7 list nested-lists


【解决方案1】:

使用内置的zip 函数。这正是你想要的。来自python手册:

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

或者,如果您想要一个列表列表,而不是元组列表,您可以使用 zip 和列表推导:

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

【讨论】:

  • 谢谢!!我检查一下。我不能放 +1,因为没有 15。但更感谢
  • 很高兴为您提供帮助。即使您无法投票,您也可以随时通过单击分数附近的复选标记来接受任何适合您的答案。接受答案也会获得一些声誉积分,这会鼓励人们在未来回答您的问题。
  • 奈杰尔还有另一个答案应该可以工作。它使用map 而不是列表推导。如果重要,您可以测试一下哪个更快。
  • 对于它的价值,我做了一个非常快速的测试,使用列表理解比使用 map 稍微快一点。将每个示例运行一千万次,使用map 只用了不到一秒的时间(大约长了 5%)。
  • 有两个维度元素一个 = [[1,4],[2,5],[3,6]] 和两个 = [[2,5],[6,7],[ 6,7]] 我们期望的结果:result =[[1,4,2,5],[2,5,6,7],[3,6,6,7]] 一样吗?
【解决方案2】:

试试:

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

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

zip(listone, listtwo) 将返回一个元组列表。由于您需要列表列表,因此您需要将每个元组转换为列表。 map(list, list_of_tuples) 电话正是这样做的。

【讨论】:

  • 谢谢你的回答。
  • 它在 Python 3.9 中返回一个地图对象,必须转换为带有列表的列表(地图...)
猜你喜欢
  • 2015-04-29
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 2022-07-27
相关资源
最近更新 更多