Python For循环中的循环变量内存

Python For循环中的循环变量内存,python,python-3.x,for-loop,Python,Python 3.x,For Loop,来自MATLAB背景,希望对以下行为进行澄清: 在列表列表上循环时,循环变量似乎在循环中受到影响: foo = [['string1'],['string2'],['string3']] for item in foo: item.append('test') print(foo) [['string1', 'test'], ['string2', 'test'], ['string3', 'test']] 为什么foo在追加项时更新 同样,为什么有些方法需要分配一个输出,而另

来自MATLAB背景,希望对以下行为进行澄清:

在列表列表上循环时,循环变量似乎在循环中受到影响:

foo = [['string1'],['string2'],['string3']]

for item in foo:
    item.append('test')

print(foo)


[['string1', 'test'], ['string2', 'test'], ['string3', 'test']]
为什么
foo
在追加
项时更新

同样,为什么有些方法需要分配一个输出,而另一些方法则不需要?例如,在列表上,您可以通过以下方式进行附加:

list.append(新项目)

但对于字符串,需要指定输出:


string=string.replace('old','new')
您可以使用x=int/float/str(134324)来“重新键入” 这里有一个例子:

x_int = 13
print(type(x_int))`
y_str = ('d')
print(type(y_str))
print('and here we can change type')
x_str = str(13)
print(type(x_str))
y_int = int('d')
#You can retype just something. 
#you can retype int into float
#you can retype int and float into string
#you CANT retype string into float or int

我在Python中找到了关于副本和引用的答案。有关此线程的详细信息:

此参考来自@juanpa.arrivill:


谢谢/

您认为这段代码应该做什么?为什么?不同的方法做不同的事情;有些更改参数,有些返回值,有些同时执行。因为
item
引用了列表中的对象。您可以修改该对象,因此很明显该对象将在列表中被修改(因为它是同一个对象)。如果你做了
item=foo[0];项目。附加(“测试”);print(foo[0])
您希望得到什么?请再次参阅@GolferDude阅读:Python与matlab是一种非常不同的语言。Python列表与matlab数组不同,对于类似的内容,请使用
numpy.array
。无论如何,Python从不隐式创建副本。你只是引用了具有新名称的对象我不明白这是如何解决这个问题的……而且“重新键入”并不是真正的标准术语,你通常不会更改对象的类型,你会创建一个不同类型的新对象,但即使使用这个术语,“你不能将字符串重新键入float或int”当然可以
int(“10”)
,或
float(“1.23”)
我在谈论单词;我找不到任何英语术语来形容“Přetypování”,它是什么,什么改变了类型。“类型转换”可能。但无论如何,我还是不明白这和OP的问题有什么关系