(初学)Python中有关数列打印输出问题

weixin_45018295 2019-09-20 04:23:29



请教:图片中有一行注释 ,如果去掉注释。p[3] 打印出来就是 o,跟预想的不一样。
另外为什么这个时候在用了 for ... in... 语句以后,p[3] = o

还请不吝赐教!谢谢!
...全文
229 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_45018295 2019-09-20
  • 打赏
  • 举报
回复
解答还是挺效率的 ,谢谢两位!
大头姜 2019-09-20
  • 打赏
  • 举报
回复
同为新手,尝试了一下如下代码: people=['xiaohong','xiaoming','xiaozhang','xiaofei','xiaowang'] p = people print(id(p),id(people)) #内存地址分别为:1651966960264 1651966960264, print(type(p)) #此时数据类型为list for p in people: print('HI , '+p+" , Plz come to have dinner with me this evening") print(id(p)) #此时内存地址为1651968870320,与原先不一致,说明变量p指向的内存地址发生变化 print(type(p)) #此时数据类型变为字符串,验证了如上想法 个人想法:同一个变量名只能指向一个内存地址,你在for循环中使用了重复的变量p,导致p最后指向的内存地址发生变化,最后指向了for循环中最后一个值“xiaowang”,此时变量p的数据类型已经变成了str且对应值得"xiaowang",所以再次打印p[3]时,打印的是字符串"xiaowang"对应的第4个索引值"o"
尐东东 2019-09-20
  • 打赏
  • 举报
回复
变量重名了, 你在执行 for p in people 的时候改变了之前p的值, 在 for 循环执行完毕后 p 就变成了 'xiaowang' 所以 p[3]就是字符串第四个字母

people = ['xiaoming', 'xiaohong']
p = people
print(p) # ['xiaoming', 'xiaohong']
for p in people:
    pass
print(p) # xiaohong

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧