如何从持有价值的对象中递减?
How to decrement from an object that's holding a value?
我不知道如何从列表中的对象递减。
例如:
a = 1
b = 2
c = 3
lst = [a, b, c]
choice = a
choice = choice - 2
当我这样做时,它不会从 a
中扣除
您使用索引访问列表元素:
a = 1
b = 2
c = 3
list = [a, b, c]
choice = 0 # the index of `a`
lst[choice] -= 2
这不会更改 a
的值,因为整数在 python 中是不可变的。只有存储在列表中的引用会发生变化。
您可以使用 list.index
按值查找索引:
choice = lst.index(a)
如果您想按名称而不是按值搜索,请使用字典而不是列表:
d = {
'a' = 1,
'b' = 2,
'c' = 3
}
d['a'] -= 2
这是一个有趣的问题,它促使我们思考 'object' 的含义。
例如,这里有一些代码可以按照您期望的方式操作 'objects':
a = [1]
b = [2]
c = [3]
lst = [a, b, c]
index_choice = 6 % 3 # some calculation that results in 0
choice = lst[index_choice]
choice[0] = choice[0] - 2
print(a)
输出:
[-1]
这里我们将 a
、b
和 c
初始化为对可变对象(在本例中为长度为 1 的列表)的引用,并初始化 lst
成为这些对象引用的集合。
然后我们决定更新 lst
中某个位置 index_choice
的对象(假设它是位置 0,因为那是 a
引用的对象所在的位置) .我们使用语句 choice = lst[index_choice]
.
将对该对象的引用放在名为 choice
的变量中
然后我们修改对象属性的值:在本例中,索引为 0 的元素,它是 choice
引用的长度为 1 的列表中的唯一数字。我们使用赋值 choice[0] = choice[0] - 2
.
修改这个属性
现在我们检查a
,我们看到它的attribute
的值(a
引用的长度为1的列表中的唯一数字)已经更新从 1
到 -1
。这是因为 choice
和 a
是对同一对象的不同引用,即初始化为 [1]
并且我们使用语句 choice[0] = choice[0] - 2
.[=33 更新的列表=]
总而言之,我相信您在 objects
中所期望的确实可以在 Python 中实现,但它要求对象(或更具体地说,对象的属性)是就地修改,这对于不可变类型(例如整数)是不可能的,但对于可变类型(例如列表或 user-defined 类型的对象是可能的。
我不知道如何从列表中的对象递减。
例如:
a = 1
b = 2
c = 3
lst = [a, b, c]
choice = a
choice = choice - 2
当我这样做时,它不会从 a
您使用索引访问列表元素:
a = 1
b = 2
c = 3
list = [a, b, c]
choice = 0 # the index of `a`
lst[choice] -= 2
这不会更改 a
的值,因为整数在 python 中是不可变的。只有存储在列表中的引用会发生变化。
您可以使用 list.index
按值查找索引:
choice = lst.index(a)
如果您想按名称而不是按值搜索,请使用字典而不是列表:
d = {
'a' = 1,
'b' = 2,
'c' = 3
}
d['a'] -= 2
这是一个有趣的问题,它促使我们思考 'object' 的含义。
例如,这里有一些代码可以按照您期望的方式操作 'objects':
a = [1]
b = [2]
c = [3]
lst = [a, b, c]
index_choice = 6 % 3 # some calculation that results in 0
choice = lst[index_choice]
choice[0] = choice[0] - 2
print(a)
输出:
[-1]
这里我们将 a
、b
和 c
初始化为对可变对象(在本例中为长度为 1 的列表)的引用,并初始化 lst
成为这些对象引用的集合。
然后我们决定更新 lst
中某个位置 index_choice
的对象(假设它是位置 0,因为那是 a
引用的对象所在的位置) .我们使用语句 choice = lst[index_choice]
.
choice
的变量中
然后我们修改对象属性的值:在本例中,索引为 0 的元素,它是 choice
引用的长度为 1 的列表中的唯一数字。我们使用赋值 choice[0] = choice[0] - 2
.
现在我们检查a
,我们看到它的attribute
的值(a
引用的长度为1的列表中的唯一数字)已经更新从 1
到 -1
。这是因为 choice
和 a
是对同一对象的不同引用,即初始化为 [1]
并且我们使用语句 choice[0] = choice[0] - 2
.[=33 更新的列表=]
总而言之,我相信您在 objects
中所期望的确实可以在 Python 中实现,但它要求对象(或更具体地说,对象的属性)是就地修改,这对于不可变类型(例如整数)是不可能的,但对于可变类型(例如列表或 user-defined 类型的对象是可能的。