你将得到一个含有整数(X)的非空列表。在这个任务里,你应该返回在此列表中的非唯一元素的列表。要做到这一点,你需要删除所有独特的元素(这是包含在一个给定的列表只有一次的元素)。解决这个任务时,不能改变列表的顺序。例如:[1,2,3,1,3] 1和3是非唯一元素,结果将是 [1, 3, 1, 3]。
输入: 一个含有整数的列表。
输出: 一个含有不唯一元素的整数列表。
def checkio(data: list) -> list:
newdata = []
for i in data:
if data.count(i) >= 2:
newdata.append(i)
return newdata
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")
他人写法1:
def checkio(data):
_unique = list(filter(lambda x: data.count(x) == 1, set(data)))
for item in data:
if item not in _unique:
yield item
他人写法2:
def checkio(data):
return [i for i in data if data.count(i) > 1]
他人写法3:(speedy)
def checkio(data):
from collections import Counter
nonunique = Counter(data) - Counter(set(data))
return [x for x in data if x in nonunique]