如何传播一个巨蟒数组

在 JS 我可以做到这一点

const a = [1,2,3,4]
const b = [10, ...a]
console.log(b) // [10,1,2,3,4]

蟒蛇有类似的方法吗?

97950 次浏览

As Alexander points out in the comments, list addition is concatenation.

a = [1,2,3,4]
b = [10] + a  # N.B. that this is NOT `10 + a`
# [10, 1, 2, 3, 4]

You can also use list.extend

a = [1,2,3,4]
b = [10]
b.extend(a)
# b is [10, 1, 2, 3, 4]

and newer versions of Python allow you to (ab)use the splat (*) operator.

b = [10, *a]
# [10, 1, 2, 3, 4]

Your choice may reflect a need to mutate (or not mutate) an existing list, though.

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...

Python's list object has the .extend function.

You can use it like this:

    a = [1, 2, 3, 4]
b = [10]
b.extend(a)
print(b)

The question does not make clear what exactly you want to achieve.

To replicate that operation you can use the Python list extend method, which appends items from the list you pass as an argument:

>>> list_one = [1,2,3]
>>> list_two = [4,5,6]
>>> list_one.extend(list_two)
>>> list_one
[1, 2, 3, 4, 5, 6]

If what you need is to extend a list at a specific insertion point you can use list slicing:

>>> l = [1, 2, 3, 4, 5]
>>> l[2:2] = ['a', 'b', 'c']
>>> l
[1, 2, 'a', 'b', 'c', 3, 4, 5]