我知道在Python中,常规的C++风格的变量赋值被对东西的引用所取代,即
a=[1,2,3]
b=a
a.append(4)
print(b) #gives [1,2,3,4]
print(a) #gives [1,2,3,4]
但我仍然很困惑为什么基本类型会出现类似的情况,例如。整数的工作方式不同吗?
a=1
b=a
a+=1
print(b) # gives 1
print(a) # gives 2
但是等等,当我们考虑循环时,它会变得更加混乱!
li=[1,2,3]
for x in li:
x+=1
print(li) #gives [1,2,3]
这是我所期望的,但是如果我们这样做会发生什么:
a,b,c=1,2,3
li=[a,b,c]
for x in li:
x+=1
print(li) #gives [1,2,3]
也许我的问题应该是如何循环遍历整数列表并在没有 map() 的情况下更改它们,因为我需要其中的 if 语句。我唯一能想到的就是使用
for x in range(len(li)):
Do stuff to li[x]
正在将整数打包在一个元素列表中。但一定有更好的方法。