Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 26, 2015 16:27:33

Xryst
Зарегистрирован: 2015-01-30
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Как разработать функцию clean_list(list_to_clean)?

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

Отредактировано Xryst (Фев. 26, 2015 16:28:55)

Офлайн

#2 Фев. 26, 2015 16:44:44

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Как разработать функцию clean_list(list_to_clean)?

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



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Фев. 26, 2015 16:49:07

Xryst
Зарегистрирован: 2015-01-30
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Как разработать функцию clean_list(list_to_clean)?

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)

Офлайн

#4 Фев. 26, 2015 17:02:59

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Как разработать функцию clean_list(list_to_clean)?

if j == i and type(j) == type(i):

А зачем еще и проверку по типу?



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#5 Фев. 26, 2015 17:05:57

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Как разработать функцию clean_list(list_to_clean)?

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 # возвращаем наш список



————————————————
-*- Simple is better than complex -*-

Офлайн

#6 Фев. 26, 2015 17:07:58

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Как разработать функцию clean_list(list_to_clean)?

def clean_list(l):
    return [v for k,v in enumerate(l) if v not in l[:k]]



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#7 Фев. 26, 2015 17:08:02

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Как разработать функцию clean_list(list_to_clean)?

ajib6ept
А зачем еще и проверку по типу?
я уже помогал с этой задачкой
и удивился когда на мой код сказало не верно! посмотрел примеры и увидел вот такое
>>> clean_list([1, 1.0, 2])
[1, 1.0, 2]
а в пайтоне
>>> 1 == 1.0
True



————————————————
-*- Simple is better than complex -*-

Офлайн

#8 Фев. 26, 2015 17:08:52

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Как разработать функцию clean_list(list_to_clean)?

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]



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Фев. 26, 2015 17:10:52)

Офлайн

#9 Фев. 26, 2015 17:57:21

Xryst
Зарегистрирован: 2015-01-30
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Как разработать функцию clean_list(list_to_clean)?

Спасибо! за обширное обьяснения….

Офлайн

#10 Фев. 26, 2015 21:43:58

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Как разработать функцию clean_list(list_to_clean)?

list(set(incoming_list))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version