https://py.checkio.org/mission/non-unique-elements/
The process of removing non-unique elements from the list.
As an example, it returns [1, 3, 1, 3]
for [1, 2, 3, 1, 3]
.
v0.1
I passed all assertions below, but the description is complicated.
from collections import Counter
def checkio(data):
print(list(data))
counter = Counter(data)
pickups = []
for num, cnt in counter.most_common():
if cnt > 1:
pickups.append(num)
reslist = []
for elem in data:
for flt in pickups:
if elem is flt:
reslist.append(elem)
#print(list(reslist))
return reslist
#Some hints
#You can use list.count(element) method for counting.
#Create new list with non-unique elements
#Loop over original list
if __name__ == "__main__":
#These "asserts" using only for self-checking and not necessary for auto-testing
assert list(checkio([1, 2, 3, 1, 3])) == [1, 3, 1, 3], "1st example"
assert list(checkio([1, 2, 3, 4, 5])) == [], "2nd example"
assert list(checkio([5, 5, 5, 5, 5])) == [5, 5, 5, 5, 5], "3rd example"
assert list(checkio([10, 9, 10, 10, 9, 8])) == [10, 9, 10, 10, 9], "4th example"
print("It is all good. Let's check it now")
Even if you look at the suggestion, it says that you should use list.append (), so I can't think of any improvement.
v0.2
I decided to stop adding and remove it.
from collections import Counter
def checkio(data):
print(list(data))
counter = Counter(data)
removes = []
for num, cnt in counter.most_common():
if cnt == 1:
removes.append(num)
for elem in removes:
data.remove(elem)
#print(list(reslist))
return data
#Some hints
#You can use list.count(element) method for counting.
#Create new list with non-unique elements
#Loop over original list
if __name__ == "__main__":
#These "asserts" using only for self-checking and not necessary for auto-testing
assert list(checkio([1, 2, 3, 1, 3])) == [1, 3, 1, 3], "1st example"
assert list(checkio([1, 2, 3, 4, 5])) == [], "2nd example"
assert list(checkio([5, 5, 5, 5, 5])) == [5, 5, 5, 5, 5], "3rd example"
assert list(checkio([10, 9, 10, 10, 9, 8])) == [10, 9, 10, 10, 9], "4th example"
print("It is all good. Let's check it now")
Recommended Posts