gpt4 book ai didi

python - 引用列表中的元素

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:17 24 4
gpt4 key购买 nike

考虑到这两个例子,我对 python 如何处理对列表中元素的引用感到有点困惑:

第一个例子:

import random
a = [[1,2],[3,4],[5,6],[7,8]]
b = [0.1,0.2]
c = random.choice(a)
c[:] = b
print(a)

第二个例子:

import random
a = [1, 2, 3, 4, 5, 6, 7, 8]
b = 0.1
c = random.choice(a)
c = b
print(a)

在第一个例子中,改变了列表a中的内容;而在第二个例子中,列表a的内容没有改变。这是为什么?

最佳答案

让我们从第二种情况开始。你写

c = random.choice(a)

因此名称 c 被绑定(bind)到 a 的某个元素,然后

c = b

因此名称 c 被绑定(bind)到某个其他对象(名称 b 所指的对象 - float 0.1)。


现在来看第一种情况。你开始于

c = random.choice(a)

所以名称 c 被绑定(bind)到 a 中的一个对象,它本身就是一个列表。然后你写

c[:] = b

这意味着,将名称 c 绑定(bind)的列表中的所有项目替换为其他列表。其实这个叫slice assignment , 并且基本上是用于调用 c 绑定(bind)到的对象的方法的语法糖。


区别在于,在第一种情况下,它不只是先将名称绑定(bind)到一个对象,然后再绑定(bind)到另一个对象。它将一个名称绑定(bind)到一个列表,然后使用这个名称间接调用列表的一个方法。

关于python - 引用列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39378598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com