如何在另一个列表的前面插入一个列表?

31
>>> a = ['foo.py']
>>> k = ['nice', '-n', '10'] 
>>> a.insert(0, k)
>>> a
[['nice', '-n', '10'], 'foo.py']

我希望将kfoo.py放在同一级别,而不是作为子列表。

6个回答

48

应用切片:

a[0:0] = k

或者您可以手动执行:

a = k + a

在任意位置插入元素的第一种方法保持不变,即a[n:n] = k会将k插入到位置n,但第二种方法不同,它将是

a = a[:n] + k + a[n:]

1
哇!让我试着理解一下。 - canadadry
1
我选择了你的切片解决方案。谢谢。 - canadadry
1
第二种方法的问题在于,您没有改变列表,而是创建了一个新列表。这仍然是一个不错的解决方案,因为OP没有指定要求。 - vi_ral

14

改为:

>>> a.insert(0, k)

使用:

>>> k.extend(a)
>>> k
['nice', '-n', '10', 'foo.py']

这个操作会“就地”更新“k”列表而不是创建一个副本。

列表的拼接(k + a)会创建一个副本。

切片选项(a[0:0] = k)也可以“就地”更新,但在我看来更难读懂。


这将在k的末尾添加a。a将保持与之前相同。 - Sufian Latif
1
@FlopCoder:显然他可以让a=k,重要的是了解原地和复制连接。 - Paulo Scardine
我更喜欢直接在原地改变 a - canadadry
3
@Bon Ami:您可以选择任何形式,重要的是现在您已经有足够知识做出明智的决定。 - Paulo Scardine

5
使用列表拼接:
a = k + a

2
>>> k + a
['nice', '-n', '10', 'foo.py']

0
>>> a = ['foo.py']
>>> k = ['nice', '-n', '10']
>>> k.extend(a)
>>> print k
['nice', '-n', '10', 'foo.py']

0
    list1=list(xrange(1,11)) # numbers 1 to 10 in list
    list1[:0]=[0,0,0] # adds triple 0s to front of list
    list1+=[11,12,13] #adds [11,12,13] to the end of list
    print list1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接