列表中唯一整数的总和
Sum of unique integers in a list
问题:给你一个整数数组 nums。数组的唯一元素是在数组中只出现一次的元素。
Returnnums所有唯一元素之和
我开始尝试删除所有非唯一号码并将唯一号码添加到单独的列表中。然而,当我打印新列表时,它 returns 与原始列表(在 leetcode 上)完全相同。谁能帮我解决这个问题?谢谢!
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(your_input_list):
result = sum(set(your_input_list))
return result
Set 为您提供独特项目的无序集合。
你的 if 语句的问题是你首先测试 nums 是否不在列表中,以防你将它添加到列表中,然后你再次测试 nums 是否在列表中(不使用 elif 或else 条件),这将始终为 True。而且你还在测试 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 次),然后您将添加、删除并重新添加元素。
if nums not in lists
不正确,可能你的意思是 if i not in lists
.
这是没有 class 的简化版方法:
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。数组的唯一元素是在数组中只出现一次的元素。
Returnnums所有唯一元素之和
我开始尝试删除所有非唯一号码并将唯一号码添加到单独的列表中。然而,当我打印新列表时,它 returns 与原始列表(在 leetcode 上)完全相同。谁能帮我解决这个问题?谢谢!
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(your_input_list):
result = sum(set(your_input_list))
return result
Set 为您提供独特项目的无序集合。
你的 if 语句的问题是你首先测试 nums 是否不在列表中,以防你将它添加到列表中,然后你再次测试 nums 是否在列表中(不使用 elif 或else 条件),这将始终为 True。而且你还在测试 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 次),然后您将添加、删除并重新添加元素。if nums not in lists
不正确,可能你的意思是if i not in lists
.
这是没有 class 的简化版方法:
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]))