在python中高效地更新列表中特定位置的元素
我想对一个列表中存储的多个列表中位于在python中高效地更新列表中特定位置的元素,python,Python,我想对一个列表中存储的多个列表中位于0位置的元素应用简单的函数(例如,添加1)。到目前为止,我在这里: out = [[10, 11, 12], [13, 14, 15], [16, 17, 18], [19, 20, 21]] print(out) # [[10, 11, 12], [13, 14, 15], [16, 17, 18], [19, 20, 21]] out_updated = [[out_i[0]+1, out_i[1], out_i[2]] for out_i in out
0
位置的元素应用简单的函数(例如,添加1
)。到目前为止,我在这里:
out = [[10, 11, 12], [13, 14, 15], [16, 17, 18], [19, 20, 21]]
print(out)
# [[10, 11, 12], [13, 14, 15], [16, 17, 18], [19, 20, 21]]
out_updated = [[out_i[0]+1, out_i[1], out_i[2]] for out_i in out]
out_updated
# [[11, 11, 12], [14, 14, 15], [17, 17, 18], [20, 20, 21]]
有没有更好(更像python,更简洁)的方法来获取更新后的
out
在您的理解中使用切片:
[[row[0] + 1] + row[1:] for row in out]
如果将向第一个元素添加1
作为一个函数,可能会更整洁:
def inc_first_elem(list_):
return [list_[0]] + list_[1:]
[inc_first_elem(row) for row in out]
顺便说一句,如果您不介意额外的开销,numpy阵列非常适合:
import numpy as np
out_arr = np.array([[10, 11, 12],
[13, 14, 15],
[16, 17, 18],
[19, 20, 21]])
out_arr[:,0] += 1
时期我删掉了
+
以加入两个列表。谢谢大家!@MartaKaras您也可以使用.extend()