我不会改变你自己的方法,而是回答你的问题:
lol = [[1,3],[3,4]]
from operator import setitem
map(lambda x: setitem(x, 1, -2), lol)
print(lol)
[[1, -2], [3, -2]]
它完成了任务,但你基本上使用map副作用并创建None的列表:
In [1]: lol = [[1, 3], [3, 4]]
In [2]: from operator import setitem
In [3]: map(lambda x: setitem(x, 1, -2), lol)
Out[3]: [None, None]
In [4]: lol
Out[4]: [[1, -2], [3, -2]]
所以真的坚持自己的循环逻辑.
它们简单的循环也更高效:
In [13]: %%timeit
lol = [[1,2,3,4,5,6,7,8] for _ in range(100000)]
map(lambda x: setitem(x, 1, -2), lol)
....:
10 loops, best of 3: 45.4 ms per loop
In [14]:
In [14]: %%timeit
lol = [[1,2,3,4,5,6,7,8] for _ in range(100000)]
for sub in lol:
sub[1] = -2
....:
10 loops, best of 3: 31.7 ms per
唯一的时间图.如果您可以使用内置函数或方法(即map(str.strip,iterable))调用它们,那么一旦包含lambda,性能通常会受到很大影响.