如何使用python itertools组合打印变量名称

S12000

假设我有以下代码,其中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有关。

猎户座猎手

这个问题确实与Georgy在评论中提到的问题相似,尽管绝对不同。更具体地说,您的问题是这样的:

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

让我知道那是否不能回答您的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章