[英]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.