如何传播python数组

Ale*_*ory 15 python

在JS我可以做到这一点

const a = [1,2,3,4]
const b = [10, ...a]
console.log(b) // [10,1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

在python中有类似的方法吗?

Ada*_*ith 23

正如亚历山大在评论中指出的那样,列表添加是连接.

a = [1,2,3,4]
b = [10] + a  # N.B. that this is NOT `10 + a`
# [10, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

你也可以使用 list.extend

a = [1,2,3,4]
b = [10]
b.extend(a)
# b is [10, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

较新版本的Python允许您(ab)使用splat(*)运算符.

b = [10, *a]
# [10, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

但是,您的选择可能反映了对现有列表进行变异(或不变异)的需要.

a = [1,2,3,4]
b = [10]
DONTCHANGE = b

b = b + a  # (or b += a)
# DONTCHANGE stays [10]
# b is assigned to the new list [10, 1, 2, 3, 4]

b = [*b, *a]
# same as above

b.extend(a)
# DONTCHANGE is now [10, 1, 2, 3, 4]! Uh oh!
# b is too, of course...
Run Code Online (Sandbox Code Playgroud)


Fra*_*era 7

这个问题并没有说明你到底想要达到什么目的。

要复制该操作,您可以使用 Python listextend方法,该方法附加您作为参数传递的列表中的项目:

>>> list_one = [1,2,3]
>>> list_two = [4,5,6]
>>> list_one.extend(list_two)
>>> list_one
[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

如果您需要在特定插入点扩展列表,您可以使用列表切片:

>>> l = [1, 2, 3, 4, 5]
>>> l[2:2] = ['a', 'b', 'c']
>>> l
[1, 2, 'a', 'b', 'c', 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)


小智 6

Python的列表对象具有该.extend功能。

你可以这样使用它:

    a = [1, 2, 3, 4]
    b = [10]
    b.extend(a)
    print(b)
Run Code Online (Sandbox Code Playgroud)

  • 啊,我错过了一个;)可能值得特别指出的是 `list.extend` 返回 `None`,所以不要使用 `b = b.extend(a)`。这是 Python 初学者经常犯的错误。 (3认同)