Форум сайта python.su
Есть задача:
Разработать функцию clean_list(list_to_clean), которая принимает 1 аргумент – список любых значений (строк, целых и действительных чисел) произвольной длины, и возвращает список, который состоит из тех же значений, но не содержит повторы элементов. Это значит, что в случае наличия значения в начальном списке в нескольких экземплярах первый “экземпляр” значения остается на своем месте, а второй, третий но др. удаляются.
Например
Вызов функции: clean_list()
Возвращает:
Вызов функции: clean_list()
Возвращает:
Вызов функции: clean_list()
Возвращает:
Вызов функции: clean_list()
Возвращает:
Вопрос:, как можно решить данную задачу?
Спасибо…
Отредактировано Xryst (Фев. 26, 2015 16:28:55)
Офлайн
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
Офлайн
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 (Фев. 26, 2015 16:51:08)
Офлайн
if j == i and type(j) == type(i):
Офлайн
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 # возвращаем наш список
Офлайн
def clean_list(l): return [v for k,v in enumerate(l) if v not in l[:k]]
Офлайн
ajib6eptя уже помогал с этой задачкой
А зачем еще и проверку по типу?
>>> clean_list([1, 1.0, 2])
[1, 1.0, 2]
>>> 1 == 1.0 True
Офлайн
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]
Отредактировано terabayt (Фев. 26, 2015 17:10:52)
Офлайн
Спасибо! за обширное обьяснения….
Офлайн
list(set(incoming_list))
Офлайн