我想要求用戶輸入一個字串串列,例如: ["i", "love you" , "so much", "so much"] 并檢查是否包含相等的字串并列印出現最多的字串按升序排列。我想知道如何使用地圖或兩個 foo 回圈來做到這一點。
我嘗試使用一個 foo 回圈但效率低下,因為我不能以另一種方式做到這一點。我需要使用 2 foor lops 或地圖來執行此操作,但我不知道如何實作邏輯。誰能幫我?謝謝
uj5u.com熱心網友回復:
您可以為此使用一組。集合不能有重復的元素,因此如果將串列轉換為集合并且串列的大小縮小,則存在重復元素。但是,這僅在您不關心復制了哪個元素時才有效。
例如:
strings = ["i", "love you" , "so much", "so much"]
if len(strings) == len(set(strings)):
print("No duplicates")
else:
print("There was some duplicate")
編輯:
為了解決您的評論:
有沒有辦法我也可以列印這些元素出現在串列中的頻率?因為這樣我現在只能在有重復但不是哪個重復的情況下才能做到。例如我想列印:“這么多”、“我”、“愛你”。
是的。您可以Counter為此使用 a:
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})
uj5u.com熱心網友回復:
您可以在沒有額外資料結構的情況下執行此操作:對串列進行排序并掃描它(單回圈)以檢查是否有相等的連續元素。您還可以計算重復項或洗掉它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/417243.html
標籤:
上一篇:發夾結構簡單演算法
