簡體   English   中英

如何在python中創建組合?

[英]how to create combination in python?

我有一個像這樣布局的 .csv 文件

X1,Y1 
X2,Y1,Y2 
X3,Y1,Y2,Y3 
X4, 
X5,Y1

我期待這樣的輸出

X1,Y1
X2,Y1
X2,Y2
X3,Y1
X3,Y2
X3,Y3
X5,Y1

有沒有可能我會得到這種結果? 或者有什么可能的方法可以更容易地完成這項工作?

昨天,我只能閱讀 CSV,我正在瀏覽並獲得有關 itertools 排列和組合的信息( https://www.geeksforgeeks.org/permutation-and-combination-in-python/ )。 我的庫中沒有 itertools,我不知道如何安裝它(我一直嘗試這樣做)。

導入 csv

以 open ('list.csv') 作為 csvfile: readCsv = csv.reader(csvfile, delimiter=';')

datas = []

for row in readCsv:
    combi = row

    datas.append(combi)

如果您將您的嘗試與您的問題一起發布會更好。 無論如何,讓我們假設您已經閱讀了您的.csv文件並以這種格式存儲了您的數據:

data = [
    ['x1', 'y1'],
    ['x2', 'y1', 'y2'],
    ['x3', 'y1', 'y2', 'y3'],
    ['x4',],
    ['x5', 'y1'],
]

然后,您可以遍歷數據中的每個子列表並找到所有可能的組合。 直截了當的解決方案:

res = []
for arr in data:
    comb = []
    for cell in arr[1:]:
        if len(arr) > 1:
            comb.append(arr[0] + ',' + cell)
    if comb:
        res.append(comb)

此外,您可以將arr[0] + ',' + cell替換為join() 上面的輸出將是:

[['x1,y1'], ['x2,y1', 'x2,y2'], ['x3,y1', 'x3,y2', 'x3,y3'], ['x5,y1']]

如果您更喜歡單線解決方案,那么:

[[','.join((arr[0], cell)) for cell in arr[1:] if len(arr) > 1] for arr in data if len(arr) > 1]

輸出將是相同的。

暫無
暫無

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

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