numbers = [12,23,34]
sum = []
for number in numbers:
num = []
for n in str(number):
num.append(int(n))
sum.append(num)
print(sum)
如果我添加num.clear()AFTER sum.append(num),它會將空陣列附加到總和。為什么會這樣?看起來直到被清除num才附加到sumnum
我知道 clear() 在這里是不必要的,因為我num在回圈開始時重新初始化,但是這種行為對我來說很奇怪,特別是如果 python 解釋器逐行運行
uj5u.com熱心網友回復:
num = []并num.clear()做兩件不同的事情。
num.clear()告訴指向的串列num清空自身。
num = []重新分配num以指向一個全新的(空)串列。
當你這樣做時sum.append(num),你將該num串列附加到sum--num仍然指向同一個串列,所以當你這樣做時clear,你正在清除現在屬于的同一個串列sum。
num在您將其附加到 時不為空,但隨后sum呼叫將其清空。clear()一切都在有序進行;您的困惑源于您認為里面的串列在sum附加后不可能更改。驚喜,串列是可變的!:)
(順便說一句,不要命名變數sum——它是一個非常有用的內置函式的名稱,如果你想稍后在程式中使用該函式,你會困惑為什么它是一個串列而不是一個函式!)
uj5u.com熱心網友回復:
num參考一個特定的可變物件。即使將物件分配給sum(順便說一句,不要sum用作變數名,它是 python 內置),您清除完全相同的物件。
這是另一個向您展示串列突變的示例:
numbers = [12,23,34]
Sum = []
for number in numbers:
num = []
for n in str(number):
num.append(int(n))
Sum.append(num)
num[0] = 'a'
print(Sum)
# [[1, 2], [2, 3], ['a', 4]]
如您所見,num仍然指向最后添加的子串列,我們更改其第一項
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477173.html
上一篇:如何使用包含該產品的功能?
下一篇:為什么我的日志會轉到多個地方?
