30

鉴于,

list_1 = [1,2,3,4]
list_2 = [5,6,7,8]

在 python 中实现以下目标的最快方法是什么?

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

请注意,在 python 中可以有很多方法来合并两个列表。
我正在寻找最省时的方法。

我尝试了以下方法,这是我的理解。

代码

import time

c = list(range(1,10000000))
c_n = list(range(10000000, 20000000))

start = time.time()
c = c+c_n
print len(c)
print time.time() - start

c = list(range(1,10000000))
start = time.time()
for i in c_n:
    c.append(i)
print len(c)
print time.time() - start

c = list(range(1,10000000))
start = time.time()
c.extend(c_n)
print len(c)
print time.time() - start

输出

19999999
0.125061035156
19999999
1.02858018875
19999999
0.03928399086

因此,如果有人不费心在问题中重复使用 list_1/list_2 ,那么extend就是要走的路。另一方面,“+”是最快的方式。

不过,我不确定其他选择。

4

5 回答 5

33

您可以只使用连接:

list = list_1 + list_2

如果您不需要保留 list_1 ,您可以修改它:

list_1.extend(list_2)
于 2013-06-11T12:49:43.953 回答
12

如果您使用的是 python 3,还有另一种方法可以做到这一点,而且速度会更快一些(仅在 python 3.7 上测试过)

[*list1, *list2]

基准

from timeit import timeit
x = list(range(10000))
y = list(x)

def one():
    x + y

def two():
    [*x, *y]

print(timeit(one, number=1000, globals={'x':x, 'y': y}))
print(timeit(two, number=1000, globals={'x':x, 'y': y}))
0.10456193100253586
0.09631731400440913
于 2019-06-24T11:18:10.603 回答
11

list_1 + list_2可以。例子 -

>>> list_1 = [1,2,3,4]
>>> list_2 = [5,6,7,8]
>>> list_1 + list_2
[1, 2, 3, 4, 5, 6, 7, 8]
于 2013-06-11T12:49:35.347 回答
9

我测试了几种合并两个列表的方法(见下文),并在每次运行几次以标准化缓存更改后得出以下顺序(这会产生大约 15% 的差异)。

import time
c = list(range(1,10000000))
c_n = list(range(10000000, 20000000))
start = time.time()
*insert method here* 
print (time.time()-start)
  • 方法一:c.extend(c_n)

    • 代表结果:0.11861872673034668
  • 方法二:c += c_n

    • 代表结果:0.10558319091796875
  • 方法三:c = c + c_n

    • 代表结果:0.25804924964904785
  • 方法四:c = [*c, *c_n]

    • 代表结果:0.22019600868225098

结论 使用+=or.extend()如果你想就地合并。它们明显更快。

于 2020-04-18T15:24:38.347 回答
0
a=[1,2,3]
b=[4,5,6]

c=a+b
print(c)

输出:

 >>> [1, 2, 3, 4, 5, 6]

在上面的代码中,“+”运算符用于将 2 个列表连接成一个列表。

另一个解决方案:

 a=[1,2,3]
 b=[4,5,6]
 c=[] #Empty list in which we are going to append the values of list (a) and (b)

 for i in a:
     c.append(i)
 for j in b:
     c.append(j)

 print(c)

输出:

>>> [1, 2, 3, 4, 5, 6]
于 2020-07-07T15:44:47.113 回答