簡體   English   中英

如何使用python itertools組合打印變量名稱

[英]How to print the name of the variables with python itertools combinations

假設我有以下代碼,其中allModelsPredComb是3個元素的列表,其中每個元素是大小為2的元組,每個元組是數組。

from itertools import combinations
import numpy as np

list1 = np.random.randint(125, size=100)
list2 = np.random.randint(125, size=100)
list3 = np.random.randint(125, size=100)


allModelsPred = list([list1, list2, list3])
allModelsPredComb = list(combinations(allModelsPred, 2))

for c in range(len(allModelsPredComb)):
    sum = np.sum(allModelsPred[c][0]) * np.sum( allModelsPredComb[c][1])
    print(sum)

因此,結果得出所有組合的總和即為3。 它打印類似的東西。 (請不要在意數字的值,這不是問題)

807768
778360
70180

問題在於,用戶不清楚每種組合對應什么。 因此,我想添加列表的名稱。

所以我希望我的結果看起來像;

list1, list2
807768
list1, list3
778360
list2, list3
70180

我該如何實現?

PS:我不是Python專家。 因此,我的問題可能更具普遍性。 換句話說,不僅與itertools有關。

這個問題確實與喬治在評論中提到的問題相似,盡管絕對不同。 更具體地說,您的問題是這樣的:

from itertools import product, combinations
import numpy as np

def named_product(**items):
    values = list(items.values())[0]
    names = list(combinations([value[0] for value in values], 2))
    combs = list(combinations([value[1] for value in values], 2))
    return list(product(zip(names, combs)))

list1 = tuple(("list1", np.random.randint(125, size=100)))
list2 = tuple(("list2", np.random.randint(125, size=100)))
list3 = tuple(("list3", np.random.randint(125, size=100)))
list_of_lists = [list1, list2, list3]

for output in named_product(lists=list_of_lists):
    print("Using", output[0][0])
    # change this if you want a different function with the arrays
    print(np.sum(output[0][1][0]) * np.sum(output[0][1][1]))

樣本輸出:

Using ('list1', 'list2')
38061730
Using ('list1', 'list3')
40047770
Using ('list2', 'list3')
41575604

讓我知道這是否不能回答您的問題。

暫無
暫無

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

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