我在程序中收到以下错误:不可哈希类型:“列表”。 我想从列表中删除重复的元素,但失败了。 这是代码:
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
感谢您的帮助。
答案 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))