簡體   English   中英

從列表中的元組訪問第n個元素,但元組的長度不同

[英]Accessing nth element from tuples in list, but the length of the tuple is different

例如我有一個這樣的元組列表,第一個元組的最后一個元素是空的:

data=[('1',),('2','3'),('6','5'),('3','4')]

我想獲取每個元組的最后一個元素,我使用這樣的東西,對於數據中的 i, j,如果 j 不為空,則將 j 作為列表:

    lastelemtent=list(set([j for i,j in data if j]))[0]

我收到錯誤: not enough values to unpack (expected 2, got 1)我想得到如下結果: lastelemtent=['3','5','4']

您可以使用語法something[-1]來選擇元組列表的最后一個元素。

要從數據中獲取每個元組的最后一個元素,您必須運行

lastelement = [e[-1] for e in data]

也許您想要每個元組的第二個元素,除非元組較短。

[x[1] for x in data if len(x) > 1]

你的前提是錯誤的。 ('1',)的“最后一個元素”不是空的,但這只是一個只有一個元素的元組,這就是為什么你得到“沒有足夠的值來解包”的原因。 這也意味着'1'既是該元組的第一個元素,又是最后一個元素,因此使用索引[-1]會起作用(不會產生錯誤),但可能不會執行您期望或想要的操作。

如果你想要一個“空”的最后一個元素,也許你可以使用('1', '')('1', None)

問題是您嘗試將大小為 1 (1,)的元組解包為大小為 2 的元組: i, j 您可以使用擴展的可迭代解包

lastelemtent = [j for *i, j in data if i]
data=[('1',7),('2','3'),('6','5'),('3','4')]
lastelement = [i[-1] for i in data]

lastelement將包含這個 -->[7,3,5,4]

暫無
暫無

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

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