【发布时间】:2022-01-05 09:32:01
【问题描述】:
我目前正在尝试创建一个与itertools.combinations 具有相同功能的组合函数。
以下代码是我正在处理的代码:
def my_combs(s, num):
if num == 0:
return [[]]
res = []
for i in range(0, len(s)):
m = s[i]
rems = s[i + 1:]
for p in my_combs(rems, num-1):
res.append([m]+p)
return res
from itertools import combinations
test = [1, 2, 3, 4]
print(set(combinations(test, 2)))
print(set(my_combs(test, 2)))
我想要得到的结果是
{(1, 2), (1, 3), (1, 4), (2, 3), (3, 4), (2, 4)}
但我不断收到一条错误消息,上面写着unhashable type: 'list'
然后,当我将 print(set(my_combs(test, 2))) 更改为 print(my_combs(test, 2)) 时,我得到了
[[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
虽然结果的元素似乎相同,
我想以元组(即 { ( ) } )而不是列表(即 [ [ ] ])的形式获取结果。
在不更改任何打印语句的条件下,我有什么方法可以解决错误并获得我想要的结果?
(即我希望打印语句为 print(set(my_combs(test, 2))) 并仅更改 my_combs() 函数)
【问题讨论】:
标签: python list types tuples combinations