我如何遍历列表并检查是否包含相同的项目?
How i can i traverse a list and check if an equal item contains there?
我想要求用户输入一个字符串列表,例如:["i", "love you" , "so much", "so much"] 并检查其中是否包含相等的字符串并打印出现次数最多的字符串按升序排列。我想知道如何使用地图或两个 foor 循环来做到这一点。
我尝试用一个 foor 循环来做,但效率低下,因为我不能反过来做。我需要使用 2 个 foor lops 或地图来执行此操作,但我不知道如何实现逻辑。谁能帮我?谢谢
你可以为此使用一套。集合不能有重复元素,因此如果将列表转换为集合并且列表的大小缩小,则存在重复元素。但是,这仅在您不关心重复了哪个元素时才有效。
例如:
strings = ["i", "love you" , "so much", "so much"]
if len(strings) == len(set(strings)):
print("No duplicates")
else:
print("There was some duplicate")
编辑:
解决您对以下内容的评论:
Is there a way i could print the frequency of those elements appear in the list too? Because in that way i can only now if there is a duplicate but not which duplicate it is. For example i want to print : "so much", "i", "love you".
是的。您可以为此使用 Counter
:
from collections import Counter
strings = ["i", "love you" , "so much", "so much"]
counted = Counter(strings)
print(counted)
输出
Counter({'so much': 2, 'i': 1, 'love you': 1})
您可以在没有额外数据结构的情况下执行此操作:对列表进行排序并扫描(单循环)以检查是否有相等的连续元素。您还可以计算重复项,或删除它们。
我想要求用户输入一个字符串列表,例如:["i", "love you" , "so much", "so much"] 并检查其中是否包含相等的字符串并打印出现次数最多的字符串按升序排列。我想知道如何使用地图或两个 foor 循环来做到这一点。
我尝试用一个 foor 循环来做,但效率低下,因为我不能反过来做。我需要使用 2 个 foor lops 或地图来执行此操作,但我不知道如何实现逻辑。谁能帮我?谢谢
你可以为此使用一套。集合不能有重复元素,因此如果将列表转换为集合并且列表的大小缩小,则存在重复元素。但是,这仅在您不关心重复了哪个元素时才有效。
例如:
strings = ["i", "love you" , "so much", "so much"]
if len(strings) == len(set(strings)):
print("No duplicates")
else:
print("There was some duplicate")
编辑:
解决您对以下内容的评论:
Is there a way i could print the frequency of those elements appear in the list too? Because in that way i can only now if there is a duplicate but not which duplicate it is. For example i want to print : "so much", "i", "love you".
是的。您可以为此使用 Counter
:
from collections import Counter
strings = ["i", "love you" , "so much", "so much"]
counted = Counter(strings)
print(counted)
输出
Counter({'so much': 2, 'i': 1, 'love you': 1})
您可以在没有额外数据结构的情况下执行此操作:对列表进行排序并扫描(单循环)以检查是否有相等的连续元素。您还可以计算重复项,或删除它们。