Python 列表中唯一整数的和
问题:给您一个整数数组nums。数组的唯一元素是在数组中只出现一次的元素 返回NUM的所有唯一元素的总和 我从尝试删除所有非唯一编号开始,并将唯一编号添加到单独的列表中。但是,当我打印新列表时,它返回与原始列表完全相同的列表(在leetcode上)。有人能帮我解决这个问题吗?谢谢Python 列表中唯一整数的和,python,python-3.x,list,integer,Python,Python 3.x,List,Integer,问题:给您一个整数数组nums。数组的唯一元素是在数组中只出现一次的元素 返回NUM的所有唯一元素的总和 我从尝试删除所有非唯一编号开始,并将唯一编号添加到单独的列表中。但是,当我打印新列表时,它返回与原始列表完全相同的列表(在leetcode上)。有人能帮我解决这个问题吗?谢谢 class Solution: def sumOfUnique(self, nums: List[int]) -> int: lists = [] double = [] for i in
class Solution:
def sumOfUnique(self, nums: List[int]) -> int:
lists = []
double = []
for i in nums:
if nums not in lists:
lists.append(i)
if nums in lists:
lists.remove(i)
else:
pass
print(lists)
如果您对可以使用的数据结构没有任何约束,那么应该尽可能简单
def sumOfUnique(您的输入列表):
结果=总和(设置(您的输入列表))
返回结果
Set为您提供一个无序的唯一项集合。if语句的问题是,您首先测试nums是否不在列表中,以防您将其添加到列表中,然后再次测试nums是否在列表中(不使用elif或else条件),这总是正确的。另外,您还测试nums是否在列表中,而不是在for循环中迭代的i变量。因此,在您尝试将其转换为代码之前,可能需要一些时间来找到正确的条件。更新:使用计数器:
from collections import Counter
class Solution:
def sumOfUnique(self, nums):
counts = Counter(nums)
unique_list = [x for x in counts if counts[x] == 1]
return sum(unique_list)
要对列表中只出现一次的数字求和,可以执行以下操作:
from collections import Counter
my_dct = Counter(my_list)
total = sum(k for k, v in my_dct.items() if v == 1)
目前的实施存在两个问题:
if
块,这意味着它们彼此独立,因此每次添加元素时都会将其从列表中删除。我建议使用dict
对象,因为假设元素出现奇数次(比如3次),然后添加、删除并重新添加元素
如果nums不在列表中
是不正确的,您可能是指如果我不在列表中
def sumOfUnique(nums):
counts = {}
for i in nums:
if i in counts.keys():
counts[i] += 1
else:
counts[i] = 1
uniques = [k for k, v in counts.items() if v == 1]
print(uniques)
return sum(uniques) # return the sum of the list elements
print(sumOfUnique([1, 2, 1, 3, 4, 1]))
您正在检查整个输入列表
nums
是否在列表中。您想检查i
是否在列表中。之后不需要删除内容,也不需要执行else:pass
。他们只想对列表中恰好出现一次的数字求和。这将累加所有不同的数字,与它们在列表中出现的频率无关。@Saverio Guzzo,函数set()返回一个唯一整数列表,其中我需要一组唯一整数,如果一个整数中有多个,我们将其从返回[1,2,3]列表的最终sum中删除,但我需要一个[1,3]的l列表作为数字2返回的值在本例中不是唯一的list@D-python我已经用Counter而不是set更新了答案。