同为新手,尝试了一下如下代码:
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"