2024-04-29 20:02:58 发布
网友
当我写这段代码时:
polly = "alive" palin = ["parrot", polly] print(palin) polly = "dead" print(palin)
我想它会输出这个:
"['parrot', 'alive']" "['parrot', 'dead']"
但是,它没有。我如何让它输出?
在第二个print语句之前,将新值存储到palin:
palin
palin = ["parrot", polly]
当您将字符串放入列表中时,该列表将保存该字符串的副本。不管字符串最初是变量、文本值、函数调用的结果还是其他什么;当列表看到它时,它只是一个字符串值。更改稍后生成的字符串不会影响列表。
如果要存储对某个值的引用,而该值在更改时会被注意到,通常的机制是使用包含“引用”值的列表。将其应用到示例中,最终会得到一个嵌套列表。示例:
polly = ["alive"] palin = ["parrot", polly] print(palin) polly[0] = "dead" print(palin)
Python变量保存对值的引用。因此,当您定义palin列表时,您将传入由polly引用的值,而不是变量本身。
polly
您应该将值想象为气球,将变量作为线程绑定到这些气球。"alive"是气球,polly只是气球的一个线程,palin列表有一个不同的线程绑定到同一个气球。在python中,列表只是一系列线程,所有线程都从0开始编号。
"alive"
接下来要做的是将polly字符串绑定到一个新的气球"dead",但是列表仍然保留绑定到"alive"气球的旧线程。
"dead"
您可以将该线程替换为列表中的"alive",方法是按索引重新分配列表以引用每个线程;在您的示例中,即线程1:
1
>>> palin[1] = polly >>> palin ['parrot', 'dead']
在这里,我只是将palin[1]线程绑定到polly绑定到的同一个对象上,不管是什么。
palin[1]
请注意,python中的任何集合,例如dict、set、tuple等,也只是线程的集合。其中一些线程可以换成不同的线程,比如列表和dict,这就是python中的“可变”的原因。
dict
set
tuple
另一方面,字符串是不可变的。一旦定义了像"dead"或"alive"这样的字符串,它就是one气球。你可以用一个线程(一个变量,一个列表,或者其他什么)来约束它,但是你不能替换其中的字母。您只能将该线程绑定到一个完全的新字符串。
python中的大多数东西都可以像气球一样工作。整数、字符串、列表、函数、实例、类,都可以绑定到变量或绑定到容器中。
你可能也想读Ned Batchelder's treatise on Python names。
在第二个print语句之前,将新值存储到
palin
:当您将字符串放入列表中时,该列表将保存该字符串的副本。不管字符串最初是变量、文本值、函数调用的结果还是其他什么;当列表看到它时,它只是一个字符串值。更改稍后生成的字符串不会影响列表。
如果要存储对某个值的引用,而该值在更改时会被注意到,通常的机制是使用包含“引用”值的列表。将其应用到示例中,最终会得到一个嵌套列表。示例:
Python变量保存对值的引用。因此,当您定义
palin
列表时,您将传入由polly
引用的值,而不是变量本身。您应该将值想象为气球,将变量作为线程绑定到这些气球。
"alive"
是气球,polly
只是气球的一个线程,palin
列表有一个不同的线程绑定到同一个气球。在python中,列表只是一系列线程,所有线程都从0开始编号。接下来要做的是将
polly
字符串绑定到一个新的气球"dead"
,但是列表仍然保留绑定到"alive"
气球的旧线程。您可以将该线程替换为列表中的
"alive"
,方法是按索引重新分配列表以引用每个线程;在您的示例中,即线程1
:在这里,我只是将
palin[1]
线程绑定到polly
绑定到的同一个对象上,不管是什么。请注意,python中的任何集合,例如
dict
、set
、tuple
等,也只是线程的集合。其中一些线程可以换成不同的线程,比如列表和dict,这就是python中的“可变”的原因。另一方面,字符串是不可变的。一旦定义了像
"dead"
或"alive"
这样的字符串,它就是one气球。你可以用一个线程(一个变量,一个列表,或者其他什么)来约束它,但是你不能替换其中的字母。您只能将该线程绑定到一个完全的新字符串。python中的大多数东西都可以像气球一样工作。整数、字符串、列表、函数、实例、类,都可以绑定到变量或绑定到容器中。
你可能也想读Ned Batchelder's treatise on Python names。
相关问题 更多 >
编程相关推荐