关于修改可变迭代对象的问题,求解。

2013-01-26 23:46:04 +08:00
 jackyzy823
Python核心编程上面说:在迭代可变对象的时候修改它们并不是个好主意。

但是我实在是想改,有什么方法。

例如
m=[1,2,3,4,5]

for i in m:
i+=1
这样是无效的

我现在是通过:
for i,j in enumerate(m):
m[i]+=1
这样来实现更改的

求问有没有更好的方法=w=
3374 次点击
所在节点    Python
3 条回复
qiao
2013-01-26 23:53:39 +08:00
那句话的意思并不是说最好不要更改“可迭代对象的元素”,而是说不要更改这个”可迭代对象“。例如不要在迭代一个列表的时候从这个列表pop或remove元素。

至于楼主关于修改列表中元素的问题,推荐用 m = map(lambda x: x + 1, m) 或者 m = [x + 1 for x in m] , 直接生成一个新的数组重新绑定到原来的变量上,这样可读性会好些,前提是列表不要太大,以免造成过多开销。
PrideChung
2013-01-26 23:53:54 +08:00
新建另一个数组n,把原数组m修改后的元素加入到n里面,然后使用n。
BOYPT
2013-01-28 09:00:38 +08:00
m = [i+1 for i in m]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/58903

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX