Найти - Пользователи
Полная версия: Как разработать функцию clean_list(list_to_clean)?
Начало » Центр помощи » Как разработать функцию clean_list(list_to_clean)?
1 2
Xryst
Есть задача:
Разработать функцию clean_list(list_to_clean), которая принимает 1 аргумент – список любых значений (строк, целых и действительных чисел) произвольной длины, и возвращает список, который состоит из тех же значений, но не содержит повторы элементов. Это значит, что в случае наличия значения в начальном списке в нескольких экземплярах первый “экземпляр” значения остается на своем месте, а второй, третий но др. удаляются.
Например
Вызов функции: clean_list()
Возвращает:
Вызов функции: clean_list()
Возвращает:
Вызов функции: clean_list()
Возвращает:
Вызов функции: clean_list()
Возвращает:
Вопрос:, как можно решить данную задачу?
Спасибо…
terabayt
def clean_list(l):
    a = []
    for i in l:
        for j in a:
            if j == i and type(j) == type(i):
                break
        else:
            a.append(i)
    return a
Xryst
terabayt
def clean_list(l):
a =
for i in l:
for j in a:
if j == i and type(j) == type(i):
break
else:
a.append(i)
return a
Можешь прокоментировать словами код??
ajib6ept
if j == i and type(j) == type(i):

А зачем еще и проверку по типу?
terabayt
def clean_list(l): # объявляем функцию
    a = [] # создаем список
    for i in l: # перебор всех элементов с полученного списка
        for j in a: # перебор всех элементов с нашего списка
            if j == i and type(j) == type(i): # если значения равны и типы равны, то
                break # выходим с цикла
        else: # если прошлись по всем элементам и не выходили с цикла, то
            a.append(i) # добавляем в наш список этот элемент
    return a # возвращаем наш список
ajib6ept
def clean_list(l):
    return [v for k,v in enumerate(l) if v not in l[:k]]
terabayt
ajib6ept
А зачем еще и проверку по типу?
я уже помогал с этой задачкой
и удивился когда на мой код сказало не верно! посмотрел примеры и увидел вот такое
>>> clean_list([1, 1.0, 2])
[1, 1.0, 2]
а в пайтоне
>>> 1 == 1.0
True
terabayt
ajib6ept
def clean_list(l):
    return [v for k,v in enumerate(l) if v not in l[:k]]
print clean_list([1, 1.0])
[1]
Xryst
Спасибо! за обширное обьяснения….
sander
list(set(incoming_list))
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