2024-06-09 05:32:49 发布
网友
我很好奇如何检查列表中的两个数字是否相同。例如
myList=[1,7,9,3,1,2,8]
在本例中,“1”在“myList”中重复出现。
我如何制作一个程序,检查列表中的两个数字是否相同(重复)。尝试使用循环以便我能理解,因为我还没有学会复杂的函数。
使用^{}:
from collections import Counter myList = [1, 7, 9, 3, 1, 2, 8] counter = Counter(myList) print(counter) # prints 'Counter({1: 2, 2: 1, 3: 1, 7: 1, 8: 1, 9: 1})'
使用Collections.Counter,您知道源列表中的每个元素重复了多少次。
Collections.Counter
之后,您可以使用一个简单的^{}来知道哪些元素是重复的:
result = [i for i, j in counter.items() if j > 1] print(result) # prints '[1]'
如果你想使用循环,你必须使用一个列表或一组你已经看到的数字。然后在循环过程中,使用in运算符检查是否已经看到该数字。
in
seen = [] for number in myList: if number in seen: print "Number repeated!" else: seen.append(number)
set中不允许重复,因此非常适合这种算法。如注释中所述,检查元素是否在集合中的时间复杂度对于平均情况(O(1))是常数,因此如果您有大量的数字,这将更有效。
set
seen = set() for number in myList: if number in seen: print "Number repeated!" seen.add(number) # won't duplicate
我想说,最恶毒的方法是使用collections.Counter,但其他答案已经涵盖了这一点。要使用内置的,可以使用generator expression和set生成一组出现多次的数字。
collections.Counter
In [39]: seen = set() In [40]: print list(set(x for x in myList if x in seen or seen.add(x))) [1]
在这里,表达式将循环myList中的所有值,并将它们添加到名为seen的set中(如果已经看到)。最后,它会将结果集转换为列表并打印内容。
myList
seen
可以使用内置的set()函数将列表转换为集合,集合不能有重复项。因此,如果集合和列表的大小不同,则列表具有重复项。
set()
if len(myList) != len(set(myList)): print "duplicates"
这假设您不关心副本是什么,您只想知道是否存在一个或多个副本。
在这里,表达式将循环myList中的所有值,并将它们添加到名为seen的set中(如果已经看到它们的话)。最后,它会将结果集转换为列表并打印内容。
使用^{} :
使用
Collections.Counter
,您知道源列表中的每个元素重复了多少次。之后,您可以使用一个简单的^{} 来知道哪些元素是重复的:
如果你想使用循环,你必须使用一个列表或一组你已经看到的数字。然后在循环过程中,使用
in
运算符检查是否已经看到该数字。set
中不允许重复,因此非常适合这种算法。如注释中所述,检查元素是否在集合中的时间复杂度对于平均情况(O(1))是常数,因此如果您有大量的数字,这将更有效。我想说,最恶毒的方法是使用
collections.Counter
,但其他答案已经涵盖了这一点。要使用内置的,可以使用generator expression和set
生成一组出现多次的数字。在这里,表达式将循环
myList
中的所有值,并将它们添加到名为seen
的set
中(如果已经看到)。最后,它会将结果集转换为列表并打印内容。可以使用内置的
set()
函数将列表转换为集合,集合不能有重复项。因此,如果集合和列表的大小不同,则列表具有重复项。这假设您不关心副本是什么,您只想知道是否存在一个或多个副本。
如果你想使用循环,你必须使用一个列表或一组你已经看到的数字。然后在循环过程中,使用
in
运算符检查是否已经看到该数字。set
中不允许重复,因此非常适合这种算法。如注释中所述,检查元素是否在集合中的时间复杂度对于平均情况(O(1))是常数,因此如果您有大量的数字,这将更有效。我想说,最恶毒的方法是使用
collections.Counter
,但其他答案已经涵盖了这一点。要使用内置的,可以使用generator expression和set
生成一组出现多次的数字。在这里,表达式将循环
myList
中的所有值,并将它们添加到名为seen
的set
中(如果已经看到它们的话)。最后,它会将结果集转换为列表并打印内容。相关问题 更多 >
编程相关推荐