我試圖保留至少出現兩次的串列元素,并洗掉出現少于兩次的元素。
例如,我的串列可能如下所示:
字母 = ['a', 'a', 'b', 'b', 'b', 'c']
我想獲得一個包含至少出現兩次的數字的串列,以獲得以下串列:
letter_appear_twice = ['a', 'b']。
但由于這是更大代碼的一部分,我不知道我的串列到底是什么樣子,只是我想保留至少重復兩次的字母。但為了便于理解,我們可以假設我知道串列是什么樣的!
我嘗試了以下方法:
'''
letters = ['a', 'a', 'b', 'b', 'b', 'c']
for x in set(letters):
if letters.count(x) > 2:
while x in letters:
letters.remove(x)
print(letters)
'''
但這并不像我想要的那樣作業......
預先感謝您的任何幫助!
uj5u.com熱心網友回復:
letters = ['a', 'a', 'b', 'b', 'b', 'c']
res = []
for x in set(letters):
if letters.count(x) >= 2:
res.append(x)
print(res)
印刷:
['b', 'a']
uj5u.com熱心網友回復:
使用上面的代碼。您可以創建一個新串列并附加到它。
new_list = []
for x in set(letters):
if letters.count(x) >= 2:
new_list.append(x)
print(new_list)
輸出
['b', 'a']
uj5u.com熱心網友回復:
更容易創建新串列而不是操縱源串列
def letters_more_or_equal_to_k(letters, k):
result = []
for x in set(letters):
if letters.count(x) >= k:
result.append(x)
result.sort()
return result
def main():
letters = ['a', 'a', 'b', 'b', 'b', 'c']
k = 2
result = letters_more_or_equal_to_k(letters, k)
print(result) # prints ['a', 'b']
if __name__ == "__main__":
main()
uj5u.com熱心網友回復:
如果您不介意改組這些值,這是一種可能的解決方案:
from collections import Counter
letters = ['a', 'a', 'b', 'b', 'b', 'c']
c = Counter(letters)
to_remove = {x for x, i in c.items() if i < 2}
result = list(set(letters) - to_remove)
print(result)
輸出:
['a', 'b']
您可以稍后進行排序。此解決方案對于具有超過 10 個獨特元素的串列非常有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/439251.html
上一篇:計算視圖中的欄位
