簡體   English   中英

(Python) 將整數列表轉換為元組/集合會改變整數的位置

[英](Python) converting a list of integers into tuples/sets changes positions of integers

我想轉換

E =[1,6,1,7,2,3,2,6,3,2,3,8,4,5,4,7,5,4,5,9,6,1,6,7,6,2,7,1,7,6,7,4,8,9,8,3,9,8,9,5,]

進入

E = [{1,6},{1,7},{2,3},{2,6},{3,2},{3,8},{4,5},{4,7},{5,4},{5,9},{6,1},{6,7},{6,2},{7,1},{7,6},{7,4},{8,9},{8,3},{9,8},{9,5}

但我明白了

E=[[{1, 6}], [{1, 7}], [{2, 3}], [{2, 6}], [{2, 3}], [{8, 3}], [{4, 5}], [{4, 7}], [{4, 5}], [{9, 5}], [{1, 6}], [{6, 7}], [{2, 6}], [{1, 7}], [{6, 7}], [{4, 7}], [{8, 9}], [{8, 3}], [{8, 9}], [{9, 5}]]

相反,集合 {.} 中的順序也都被混淆了(順序不保留)。

為什么會這樣,我該如何解決?

我的代碼是:

def convert_to_set(x):
    sets = []
    l = len(x)
    for i in range(0,l,2):
        set1 = []      
        set1.append({x[i],x[i+1]})
        sets.append(set1)
    return sets

如果你想保留順序,你需要從set切換到tuple 這樣做很容易:

list(zip(E[::2], E[1::2]))

這給你:

[(1, 6),
 (1, 7),
 (2, 3),
 (2, 6),
 (3, 2),
...

一種選擇如下:

sets = [{E[i],E[i+1]} for i in range(0,len(E)-1,2)]

此外,集合是無序的,因此您無法保留順序。

暫無
暫無

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

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