Python 我的列表、元组或任何类似数据结构中的变量如何在列表中反映其更改?
我还不太清楚该如何表达,所以我将演示我的意思Python 我的列表、元组或任何类似数据结构中的变量如何在列表中反映其更改?,python,python-2.7,Python,Python 2.7,我还不太清楚该如何表达,所以我将演示我的意思 a = 1 b = 2 my_list = [a,b] print my_list # [1,2] a = a + 1 b = b * 2 print a # 2 print b # 4 # prints [1,2] but I want [2,4] print my_list 元组和集合也会发生这种情况。我需要什么样的数据结构?或者我需要什么逻辑?整数是不可变的。这意味着一旦您创建了一个整数对象,例如使用a=1,它就永远无法更改。这并不意味着
a = 1
b = 2
my_list = [a,b]
print my_list # [1,2]
a = a + 1
b = b * 2
print a # 2
print b # 4
# prints [1,2] but I want [2,4]
print my_list
元组和集合也会发生这种情况。我需要什么样的数据结构?或者我需要什么逻辑?整数是不可变的。这意味着一旦您创建了一个整数对象,例如使用
a=1
,它就永远无法更改。这并不意味着不能将名称a
重新绑定到另一个对象,只是integer对象本身的值不会改变
当您执行a=a+1
时,您正在创建一个值为2的新整数,并将其分配给a
。但原来的1仍然存在。事实上,元素my_list[0]
仍然引用原始对象,因为它从未被告知引用任何其他对象。从这个意义上讲,名称就像Python中的指针
要更改列表元素,有两个选项:
a
,请再次设置my_list[0]=a
。或者干脆把a
全部放下。为什么对同一个对象有两个引用,而不需要?你能行
my_list[0] += 1
my_list[1] *= 2
a = [1]
b = {2}
my_list = [a, b]
a[0] += 1
a.append(3)
b.add(4)
print my_list
my_dict = {
'a': 1,
'b': 2,
}
my_dict['a'] += 1
my_dict['b'] *= 2
print my_dict
<p/>
{'a': 2, 'b': 4}
my_dict={
"a":1,,
“b”:2,
}
我的字典['a']+=1
我的字典['b']*=2
打印我的字典
{'a':2,'b':4}
谢谢您的详细回答。“我把这个问题发给一位同事,他建议我改用字典,这样我就可以这样做了。”FridaySky。我在末尾添加了一个注释谢谢您添加了额外的注释,但是当我返回我的_dict.values()时,它没有按预期的顺序显示出来。目前正试图找到解决办法。@Friday。Python 2中没有对字典进行排序。你可以查看如何在SO上获得正确的订单。这已经被问了很多次了,我知道了。我花了一段时间,因为我直到现在才找到这个链接:我一直在用第一种方法,无法让我的字典维持秩序。一定要阅读和理解。
my_dict = {
'a': 1,
'b': 2,
}
my_dict['a'] += 1
my_dict['b'] *= 2
print my_dict
<p/>
{'a': 2, 'b': 4}