Найти - Пользователи
Полная версия: Удаление повторов, ошибка в коде.
Начало » Python для новичков » Удаление повторов, ошибка в коде.
1 2
giveback
ещё вариант

def clean_list(list_to_clean):
	result = []
	for el in list_to_clean:
		value = (el, type(el))
		if value not in result:
			result.append(value)
	return [value[0] for value in result]
FishHook
0x420
такой вариант не подойдет, надо проверка на тип данных, что бы 1.0 и 1
Справедливо, сейчас переделаю
FishHook
#!/usr/bin/env python
# -* coding: utf-8 -*-
def unique_list(lst):
    result = []
    in_lst = set()
    for i in lst:
        if (type(i), i) not in in_lst:
            result.append(i)
            in_lst.add((type(i), i))
    return result
s = [1, 1.0, 0, "ss", 4.0, "ss", 0, 33, 4.0]
print (unique_list(s))
0x420
Круто, спасибо, можно вопрос, каким образом вы сделали что тип тоже проверяется?
если выполняется условие то вы добавляли елемент в список по которому проходит итерация? ?
giveback
в моём варианте сохраняется и значение и его тип, а последующие итерации проверяют есть ли уже такое же значение с таким же типом. тип проверяется функцией type()
0x420
Большое вам спасибо, а таких штук я правда еще не знаю
if (type(i), i) not in in_lst:
[value[0] for value in result]
Задание приняли, теперь попытаюсь своего монстра заставить работать
Originator
0x420
……а таких штук я правда еще не знаю….

Хэ-хэ, мы много чего не знаем, не умеем, не понимаем, и чем дальше, тем больше удивляет гибкость языка, и его возможности, как бы не очень очевидные для новичков. Опыт, незаменимая штука, спасибо парням, что делятся с нами.
ЗЫ: кстате, фрагмент (type(I), I) как правильно понять? В скобке получается имеем указание типа переменной I, а через запятую все вместе в скобках читается как? Не умею в скобках, через запятую задавать условие для оператора, не хватает знания понять.
ЗЫ:ЗЫ: получается сразу в условие сравнения ставится ТИП привязанный для сравнения с переменной I, ну как бы пара условия как единое целое?
FishHook
Originator
Вы же знаете что такое кортеж?
Ну так вот (type(I), I) это как раз и есть кортеж
t = type(i)
i_typei_tuple = (t, i)
Скобки тут необязательны, но с ними лучше читается.
А постольку поскольку кортеж - хешируемый объект, то он может быть ключом словаря и его можно поместить во множество.
giveback
а про конструкцию вида
[value[0] for value in result]
можно почитать тут https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions
Originator
Блин, долго сидел думал, наверное тугодум :-)
Прицепился к скобкам, а слона та и не заметил. Вся работа в кортеже заключалась. Спасибо.
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