How to spread a python array

Python

Python Problem Overview


In JS I can do this

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

Is there a similar way in python?

Python Solutions


Solution 1 - Python

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

Solution 2 - Python

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]

Solution 3 - Python

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)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAlex CoryView Question on Stackoverflow
Solution 1 - PythonAdam SmithView Answer on Stackoverflow
Solution 2 - PythonFrancisco Jiménez CabreraView Answer on Stackoverflow
Solution 3 - Pythonuser9232447View Answer on Stackoverflow