为什么不为适当修改的方法投射变量?

时间:2017-03-11 00:28:52

标签: python list casting

提出类似(但不相同)的问题here;这个问题是为什么一个转换对象的方法不会改变基础值并将它们返回到它们的原始变量类型。

在Python中,您可以使用list()强制转换变量。为什么以下代码不像人们期望的那样工作?

stir = "lolololol"
for i in range(11):
  if i % 2:
    list(stir).insert(i, ":")

我希望"搅拌"要调用一个列表,调用.insert()方法,将原始变量的值修改为好像是一个列表,然后返回到之前的变量类型。相反,我没有得到任何改变。

将输出设置为新变量也会产生Nonetype:

x = list(stir).insert(0, ":")
print x

1 个答案:

答案 0 :(得分:1)

调用list(stir)时,您正在创建搅拌对象的新列表对象。使用.insert(0, ":")添加到列表对象,而不是原始对象。

同样调用list(stir).insert(0, ":")是函数调用,因为insert()没有返回值,x将被声明为None