Python列表和等式

2024-05-23 19:09:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在准备期中考试,我遇到了这样一个问题:

the_cake = [1,2,[3],4,5]
a_lie = the_cake[1:4]
the_cake = the_cake[1:4]
great = a_lie
delicious = the_cake
moist = great[:-1]

在Python解释器中运行此代码后,为什么会:

^{pr2}$

我的想法是他们是平等的方法,虽然不是“是”,但应该实现平等。在

也许这是因为实例化而导致的错误? 如果这是真的,那么在比较时类属性的值是否为真? 这是列表对象的特殊情况吗?在


跟进: 据此: Is there a difference between `==` and `is` in Python?

如果两个变量指向同一对象,则返回True,==如果变量引用的对象相等

那么List类的方法是否指向“append”方法的单独实例?在

如果我定义一个函数x(parameter),每次调用它,它都是一样的,因为它是分配给不同变量的同一个对象,对吗?在

那么对于某些等效变量“parameter”:

x(parameter) == x(parameter)
True

谢谢!在


Tags: the对象实例方法代码trueparameter解释器
3条回答

python2.x:type objects的函数基于对象在内存中的地址实现rich comparisons。在

python3.x:注意函数不再是可排序的。因此,例如,the_cake.append > a_lie.append将抛出一条错误消息。在

这些方法和它们各自的对象实例位于不同的位置。例如,我们有:

a = []
b = []

所以我们有:

^{pr2}$

它们各自的位置见:

>>> a.append
<built-in method append of list object at 0x7f7c7c97d560>
>>> b.append
<built-in method append of list object at 0x7f7c7c97d908>

注意不同的地址。在

两个答案都是有效的,但也请检查以下内容:

>>> a = []
>>> b = a
>>> a.append == b.append
True

相关问题 更多 >