我有一个列表:
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中执行此操作?我知道这是一个非常微不足道的问题,但我找不到办法来完成这件事。
答案 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]]