Найти - Пользователи
Полная версия: Прошу помощи в создании функции
Начало » Центр помощи » Прошу помощи в создании функции
1
0x420
Решаю такую задачу

Разработать функцию clean_list (list_to_clean),
которая принимает 1 аргумент - список любых значений (строк, целых и действительных чисел) произвольной длины,
и возвращает список, состоящий из тех же значений, но не содержит повторов элементов. Это значит, что в случае наличия значения в первоначальном списке в нескольких экземплярах первый “экземпляр” значение остается на своем месте, а второй, третий и др. удаляются.

Я подумал решить ее с помощью циклов, или точнее цикла в цикле, как правильно это реализовать я не знаю
вот мой набросок :
def clean_list(list_to_clean = [1, 1.0, '1', -1, 1]):
    ind1 = 0                                         #индекс елемента с которым сравнивают
    
    lent = len(list_to_clean)                        # на всякий случай длина списка
    for i in range(lent-1):                           # (lent-1) потому что последний елемент и так  сравниm со всеми елементами
        elem = list_to_clean[ind1]                  # тут я создал переменную которая хранит в себе елемент с корым сравнивают
        for i in list_to_clean[ind1+1:]:             # тут список начинается сразу после елемента с корым сравнивают и до конца                          
            if elem == list_to_clean[ind1+1]:       # проверка совпадает ли переменная с елементом               \
                del list_to_clean[ind1+1]             # если совпадает то удаляем этот елемент
            ind1 = ind1 + 1                       # повишаем сравниваемый елмент на один  
        ind1 = ind1 + 1                               # повышаем елемент с короым сравниваем на один
    return list_to_clean

если пытаться объяснить, то я хотел что бы сравнивалось как то так, числа это индексы списка
[0] == [1, 2, 3, 4]
[1] == [2, 3, 4]
[2] == [3, 4]
....
При запуске не работает
и где ошибка даже не знаю, или где правильно сделал тоже, прошу вашей помощи
py.user.next
>>> def f(lst):
...     uniq = set()
...     i, llen = 0, len(lst)
...     while i < llen:
...         if lst[i] in uniq:
...             del lst[i]
...             llen -= 1
...         else:
...             uniq.add(lst[i])
...             i += 1
...     return lst
... 
>>> f([1, 2, 3] * 5)
[1, 2, 3]
>>>
doza_and
Правильный путь использовать библиотеки и дописывать код если там нет того что вам надо.
https://toolz.readthedocs.org/en/latest/api.html#toolz.itertoolz.unique
Правда это не прежний список….
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB