如何展开python数组

How to spread a python array

本问题已经有最佳答案,请猛点这里访问。

在JS中我可以这样做

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

在python中有类似的方法吗?


正如亚历山大在评论中指出的,列表添加是串联。

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

也可以使用list.extend

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

更新版本的python允许您(ab)使用splat(*操作符。

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

不过,您的选择可能反映出对现有列表进行变异(或不进行变异)的需要。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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的list对象具有.extend函数。

您可以这样使用它:

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


这个问题并不能明确你到底想要达到什么目标。

还有extend方法,它将您作为参数传递的列表中的项附加在后面:

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

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

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