修改Python中的列表内容

时间:2009-06-30 05:55:24

标签: python list

我有一个列表:

list = [[1,2,3],[4,5,6],[7,8,9]]

我想以编程方式在列表中的每个值的开头附加一个数字,比如数字为9.我希望新列表如下:

list = [[9,1,2,3],[9,4,5,6],[9,7,8,9]]

如何在Python中执行此操作?我知道这是一个非常微不足道的问题,但我找不到办法来完成这件事。

5 个答案:

答案 0 :(得分:16)

for sublist in thelist:
  sublist.insert(0, 9)

使用list这样的内置名称作为您自己的东西,这只是制作过程中的一个愚蠢事故 - 调用你的东西mylist或{ {1}}等, thelist

修改:因为OP了解如何插入>在每个子列表开头的1个项目中,让我指出最有效的方法是将多个项目分配给每个子列表的一个切片(大多数列表变换器可以看作切片分配的可读替代;-),即:

list

for sublist in thelist: sublist[0:0] = 8, 9 sublist[0:0]开头的空切片,通过为其分配项目,您可以在该位置插入项目。

答案 1 :(得分:12)

>>> someList = [[1,2,3],[4,5,6],[7,8,9]]
>>> someList = [[9] + i for i in someList]
>>> someList
[[9, 1, 2, 3], [9, 4, 5, 6], [9, 7, 8, 9]]

(someList因为列表已被python使用)

答案 2 :(得分:2)

使用insert方法,修改列表

>>> numberlists = [[1,2,3],[4,5,6]]
>>> for numberlist in numberlists:
...  numberlist.insert(0,9)
...
>>> numberlists
[[9, 1, 2, 3], [9, 4, 5, 6]]

或者,更加简洁

[numberlist.insert(0,9) for numberlist in numberlists]

或者,使用列表连接,创建新列表

newnumberlists = [[9] + numberlist for numberlist in numberlists]

答案 3 :(得分:2)

如果你要做很多前期工作,那么 或许考虑使用deques *而不是列表:

>>> mylist = [[1,2,3],[4,5,6],[7,8,9]]

>>> from collections import deque
>>> mydeque = deque()
>>> for li in mylist:
...   mydeque.append(deque(li))
...
>>> mydeque
deque([deque([1, 2, 3]), deque([4, 5, 6]), deque([7, 8, 9])])
>>> for di in mydeque:
...   di.appendleft(9)
...
>>> mydeque
deque([deque([9, 1, 2, 3]), deque([9, 4, 5, 6]), deque([9, 7, 8, 9])])

* Deques是堆栈和队列的概括(名称发音为“deck”,是“双端队列”的缩写)。 Deques支持线程安全,内存高效的追加和双端队列的弹出,在任一方向上具有大致相同的O(1)性能。

并且,正如其他人仁慈地提到的那样: 因为所有事情的沉闷和丑陋的爱,
请不要在您喜欢的数据结构之后命名变量。

答案 4 :(得分:0)

#!/usr/bin/env python

def addNine(val):
    val.insert(0,9)
    return val

if __name__ == '__main__':
    s = [[1,2,3],[4,5,6],[7,8,9]]
    print map(addNine,s)

输出:

[[9, 1, 2, 3], [9, 4, 5, 6], [9, 7, 8, 9]]