Python中用while循环处理list产生了一个奇怪的问题?
因为在内存中,你的运行结果会是这样的(为了容易理解损失了一部分不影响结果的准确性):
为了实现你的预期效果,你可以这样:num_pos = for x in xrange(1, 19)]如果你非要按照自己的写法,可以这样:num_pos = n = 0while n \u0026lt; 18: a = num_pos.append(a) n += 1print(num_pos)所有命名均参考题主的代码,不代表我的命名规范。
■网友
其实可以两行代码搞定你要的结果
■网友
画个示意图,你的程序的执行结果是这样的, 【Python中用while循环处理list产生了一个奇怪的问题?】 
你的实际想要的是这样的
所以应该这样写import copya = n = 0num_pos = while n \u0026lt; 18: temp = copy.copy(num_pos) #copy contents in a, not just use the identical pointer a temp = temp + 1 num_pos.append(temp) n += 1print(num_pos)或者这样写a = n = 0num_pos = while n \u0026lt; 18: temp = list(num_pos) # same as copy.copy temp += 1 num_pos.append(temp) n += 1print(num_pos)
■网友
a在内存中的位置是不变的,题主的num_pos中最终存放的列表是18个a,它们的值都指向同一块内存,所以值都是一样的。上面那些回答示意图已经标的很清楚了,我就不画了
■网友
题主可以把num_pos.append(a)改为num_pos.append(a)每次循环的时候把a当前值的拷贝添加进num_pos
推荐阅读
- 『黄金时间』请认准这个蓝色的标志! 黄金时间丨同行业中用水最少的企业
- 怎样成为一名合格的Python程序员?
- python 爬虫,咋获得输入验证码之后的搜索结果
- python的html5lib这个库咋使用啊我在网上也没有找到相关文档
- 零基础入门学习啥语言好
- Python3.4和3.5区别大么
- python 中 def_():...... return _有啥作用
- Rust 中循环啥时候使用loop 啥时候使用while true?
- 新互联网网站用Java还靠谱么对比Php,Python,Ruby的话
- 30岁男,创业失败转行学python,是否很晚?也不好找工作?
