簡體   English   中英

如何在python中追加子列表的元素

[英]How to append an element of a sublist in python

我有一個表格列表:

list = [[3, 1], [3, 2], [3, 3]]

我想將它分成兩個列表,一個列表中每個子列表的x值,另一個列表中每個子列表的y值。

我目前有這個:

x = y = []
for sublist in list:
    x.append(sublist[0])
    y.append(sublist[1])

但是這會返回這個,我不知道為什么:

x = [3, 1, 3, 2, 3, 3]
y = [3, 1, 3, 2, 3, 3]

通過執行x = y = []您將創建xy並將它們引用到同一列表,從而產生錯誤的輸出。 (對象ID在下面相同)

>>> x = y = []
>>> id(x)
43842656
>>> id(y)
43842656

如果你解決了這個問題,你會得到正確的結果。

>>> x = []
>>> y = []
>>> for sublist in lst:
        x.append(sublist[0])
        y.append(sublist[1])


>>> x
[3, 3, 3]
>>> y
[1, 2, 3]

雖然這可以通過這樣做變得更容易。

x,y = zip(*lst)

PS - 請不要使用list作為變量名稱,它會影響內置。

當你說x = y = [] ,你會導致xy成為對同一列表的引用。 因此,當您編輯其中一個時,您可以編輯另一個。 關於引用如何工作, 這里有一個很好的解釋。

因此,如果您改為使用代碼,則可以使用代碼

x = []; y = []

您也可以嘗試使用zip

lst = [[3, 1], [3, 2], [3, 3]]
x,y = zip(*lst)

正如Sukrit所說,不要使用list作為變量名(或intstr或者你有什么),因為雖然它是內置的Python(加載解釋器並輸入help(list) - 事實上有些東西彈出up意味着Python有預先定義的list來表示某些東西)Python會高興地讓你重新定義(也就是陰影)它。 哪個會破壞你的代碼。

那是因為當你構造像x = y = [] x和y時,x和y指向同一個列表。 如果你想讓它們成為不同的列表,你應該聲明它們

x = []
y = []

您正在設置x = y = []意味着x指向指向列表的y,因此無論何時附加到一個,您都要附加到另一個。 將代碼更改為以下內容:

x = [] 
y = []
for sublist in list:
    x.append(sublist[0])
    y.append(sublist[1])

你可以做:

x = [i[0] for i in list]
y = [i[1] for i in list]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM