Я хочу знать, как удалить все повторяющиеся символы в этом списке ниже (не использовать set()). Я пытался использовать remove()
в списке, но он просто может удалить первое вхождение значения.
Пример: ввод = [23,42,65,73,5,2,73,51] вывод = [23,42,65,5,2,51]
def number_repeated(lst):
index = int(input('Remove index : '))
a = 0
for num in lst:
if num == index:
a += 1
print('The number of digits are repeated: {}'.format(a))
list(set(lst)).remove(index)
return lst
print(number_repeated([23, 42, 65, 73, 5, 2, 73, 51]))
Выход:
[65, 2, 5, 42, 51, 23]
Кроме того, почему в этом коде выше, когда я использую set()
, вывод не отсортирован?
Наборы — это неупорядоченные структуры данных. Если вы хотите отсортировать, используйте функции sorted(set())
.
Это не дало такого результата.
Вы можете использовать collections.Counter() для удаления всех дубликатов:
Пример:
from collections import Counter
originalList = [23,42,65,73,5,2,73,51]
filteredList = [k for k, v in Counter(originalList).items() if v == 1]
print(filteredList)
спасибо за ответ, но я хочу определить функцию, а не использовать модуль :)))
Попробуй это
def myFunc(lst):
list2 = []
for x in lst:
if not x in list2:
list2.append(x)
list2 = sorted(list2)
return list2
print(myFunc([23,42,65,73,5,2,73,51]))
Выход:
[2, 5, 23, 42, 51, 65, 73]
я исправил эту ошибку
Наборы не (обязательно) отсортированы.