1

让我们有,例如:

nodes = [[1, 2],[3, 4]] 
thelist = [[5, 6], [7, 8]]

我该如何编码,所以列表将是:

[[1, 2],[3, 4],[5, 6],[7, 8]]

我知道怎么做,但我想要一种优雅的 python 方式。

我的尝试:

for node in nodes:
    thelist.insert(0, node)

我想应该有一种更 Pythonic 的方式来做到这一点。

编辑:顺序在某种程度上很重要(这就是我尝试在索引 0 处插入的原因)。

4

3 回答 3

11

只需将它们加在一起:

In [11]: nodes + thelist
Out[11]: [[1, 2], [3, 4], [5, 6], [7, 8]]

您还可以使用 extend (修改节点):

In [12]: nodes.extend(thelist)

In [13]: nodes
Out[13]: [[1, 2], [3, 4], [5, 6], [7, 8]]
于 2013-09-06T17:44:58.580 回答
8

您可以分配给切片thelist[:0]以在开头插入元素:

nodes = [[1, 2],[3, 4]]
thelist = [[5, 6], [7, 8]]
thelist[:0] = nodes
# thelist is now [[1, 2], [3, 4], [5, 6], [7, 8]]

有关操作列表的许多有用方法,请参阅 Python 教程。

于 2013-09-06T17:46:24.610 回答
5

或者,如果某种顺序很重要,或者只是一次拿一个物品的能力,那么您可以使用heapq.merge

import heapq

nodes = [[1, 2],[3, 4]]
thelist = [[5, 6], [7, 8]] 
res = list(heapq.merge(nodes, thelist))
# [[1, 2], [3, 4], [5, 6], [7, 8]]

nodes = [[1, 2], [5,6]]
thelist = [[3, 4], [7, 8]]    
res = list(heapq.merge(nodes, thelist))
# [[1, 2], [3, 4], [5, 6], [7, 8]]

或者,只需使用:

for heapq.merge(nodes, thelist):

请注意, order 可能不同于itertools.chain.

于 2013-09-06T17:49:18.880 回答