Leetcode90。TypeError:不可哈希类型:'列表'

时间:2019-09-15 03:51:43

标签: python algorithm data-structures

我在程序中收到以下错误:不可哈希类型:“列表”。 我想从列表中删除重复的元素,但失败了。 这是代码:

class Solution:
    def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
        result = []
        ele_num = len(nums)
        sub_size = 2 ** ele_num
        for i in range(sub_size):
            result.append([])
        for i in range(ele_num):
            for j in range(sub_size):
                if j >> i & 1:
                    result[j].append(nums[i])
        s = list(set(result)) 
        return s

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

尝试一下:

class Solution:
    def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
        result = []
        ele_num = len(nums)
        sub_size = 2 ** ele_num
        for i in range(sub_size):
            result.append([])
        for i in range(ele_num):
            for j in range(sub_size):
                if j >> i & 1:
                    result[j].append(nums[i])

        s = set(tuple(arr) for arr in result)
        result_without_duplicates = [list(tupl) for tupl in s]
        return result_without_duplicates

s = Solution()
print(s.subsetsWithDup([1, 1, 1]))

为什么会出现该错误?集不能包含可变对象。列表是可变的。在此question中了解有关此内容的更多信息。

将给出相同错误的最简单示例是:

my_list = [[1, 2], [3, 4]]
print(set(my_list))

答案 1 :(得分:0)

从列表中删除重复项的一种非常简单的方法是将其转换为一组(唯一元素的集合),然后再转换回列表

def subsetsWithDup(self, nums: List[int]) -> List[int]:
    return list(set(nums))