在列表中的列表中插入值

时间:2014-01-22 00:01:35

标签: python

所以我有

matrix = [['B Borg', '3', '3', '1.0'], ['F Perry', '7', '8', '0.875'], ['R Nadal', '3', '5', '0.6']]

我想让它看起来像这样:

[['1','B Borg', '3', '3', '1.0'], ['2','F Perry', '7', '8', '0.875'], ['3','R Nadal', '3', '5', '0.6']]

我试过

matrix.insert([0][0],"1")
matrix.insert([1][0],"2")
matrix.insert([2][0],"3")

但最终结果是:

matrix = ["1",",2","3"['B Borg', '3', '3', '1.0'], ['F Perry', '7', '8', '0.875'], ['R Nadal', '3', '5', '0.6']]

我的猜测是我搞砸了插入部分的索引,但我无法弄清楚我做错了什么。

4 个答案:

答案 0 :(得分:5)

问题是[0][0]是列表[0]中的第一个元素 - 即0。因此,matrix.insert([0][0], "1")matrix.insert(0, "1")相同。换句话说,它在矩阵的顶部插入一个新行,只有一个值"1"

你想要的是matrix[0].insert(0, "1")。由于matrix[0]是矩阵中的第一行,因此会在第一行的左端插入一个新列。

答案 1 :(得分:0)

试试这个:

matrix2 = [[str(i+1)] + x for i,x in enumerate(matrix)]

答案 2 :(得分:0)

>>> matrix = [[str(i)]+subl for i,subl in enumerate(matrix, 1)]
>>> matrix
[['1', 'B Borg', '3', '3', '1.0'], ['2', 'F Perry', '7', '8', '0.875'], ['3', 'R Nadal', '3', '5', '0.6']]

或者,使用消费itertools配方:

>>> matrix = [['B Borg', '3', '3', '1.0'], ['F Perry', '7', '8', '0.875'], ['R Nadal', '3', '5', '0.6']]
>>> collections.deque((subl.insert(0, str(i)) for i,subl in enumerate(matrix, 1)), maxlen=0)
deque([], maxlen=0)
>>> matrix
[['1', 'B Borg', '3', '3', '1.0'], ['2', 'F Perry', '7', '8', '0.875'], ['3', 'R Nadal', '3', '5', '0.6']]

答案 3 :(得分:0)

如果循环遍历矩阵,则项目将是您需要插入的内容

>>> matrix = [['B Borg', '3', '3', '1.0'], ['F Perry', '7', '8', '0.875'], ['R Nadal', '3', '5', '0.6']]
>>> for i, item in enumerate(matrix, 1):
...     item.insert(0, str(i))
... 
>>> matrix
[['1', 'B Borg', '3', '3', '1.0'], ['2', 'F Perry', '7', '8', '0.875'], ['3', 'R Nadal', '3', '5', '0.6']]