所以我有
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']]
我的猜测是我搞砸了插入部分的索引,但我无法弄清楚我做错了什么。
答案 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']]