发布于2019-12-26 01:58 阅读(1453) 评论(0) 点赞(18) 收藏(0)
dic = {'a':'1','b':'2'}
lis = ['a','b']
for c in lis:
c = dic[c]
print lis
列表未更改。我曾期望该列表将更改为['1','2']
。谁能解释?
尝试使用索引而不是变量...
for i in range(len(li)):
c = li[i]
li[i] = dic[c]
print li
另外,不要使用list
作为变量名..
或用enumerate
样
for i, c in enumerate(li):
li[i] = dic[c]
print li
或列出理解
lis = [dic[c] if c in dic else c for c in lis]
为什么不做什么呢?
当使用时for x in y:
,x
在y
So中获取对象/项目的值,因此,如果更改的值x
,则不会更改的值y[i]
,i
即您所在的索引。
所以,如果你这样做
>>> y = range(5,10)
>>> for x in y:
i = y.index(x)
x += 10
print i
print 'Value of x : %3d, id: %7d' % (x, id(x))
print 'Value of y[i] : %3d, id: %7d' % (y[i], id(y[i]))
print '-'*31
你会看到差异
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/185700/040fc71e08b24c4ca54e/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!