Уведомления

Группа в Telegram: @pythonsu

#1 Май 15, 2010 00:41:38

boltayka
От:
Зарегистрирован: 2009-10-07
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление одинаковых элементов в списке.

Всем привет… Сразу говорю, учебник читал, гугл копал. Не знаю как сделать… Задача такая: Надо удалить из списка одинаковые значения.

Допустим: должно превращаться в
Я не знаю, может и глупость спрашиваю. Но, всё-же хотелось найти какое-то готовое решение. Как говорится, всё знать нельзя. Заранее спасибо

Офлайн

#2 Май 15, 2010 01:05:48

Alex2ndr
От:
Зарегистрирован: 2009-12-26
Сообщения: 204
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление одинаковых элементов в списке.

Плохо читали. Про set(наборы) смотрите. Вот вам пример:

In [1]: l = ['q', 'a', 'ew', 'ewq', 'Large Hadron Collider', 'q', 'ew' ,'a']

In [2]: f = set(l)

In [3]: f
Out[3]: set(['q', 'a', 'ew', 'ewq', 'Large Hadron Collider'])

In [4]: list(f)
Out[4]: ['q', 'a', 'ew', 'ewq', 'Large Hadron Collider']

In [5]:



Офлайн

#3 Май 15, 2010 01:16:01

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Удаление одинаковых элементов в списке.

Кто сможет сделать это без использования set?



Офлайн

#4 Май 15, 2010 08:05:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10031
Репутация: +  857  -
Профиль   Отправить e-mail  

Удаление одинаковых элементов в списке.

>>> l = ['q', 'a', 'ew', 'ewq', 'Large Hadron Collider', 'a', 'a', 'q', 'ew', 'a']
>>> l2 = []
>>> for i in l:
... if i not in l2:
... l2.append(i)
...
>>> l2
['q', 'a', 'ew', 'ewq', 'Large Hadron Collider']
>>> l = l2
>>> l
['q', 'a', 'ew', 'ewq', 'Large Hadron Collider']
>>>
такую или в смысле что-нибудь поумней



Офлайн

#5 Май 15, 2010 10:39:39

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Удаление одинаковых элементов в списке.

Насчет поумней не знаю, а то, что у меня на уме намного короче :)



Офлайн

#6 Май 15, 2010 17:37:13

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление одинаковых элементов в списке.

модный вариант:

l = [e for i,e in enumerate(l) if e not in l[:i]]
хакерский вариант:
l = dict(zip(l, l)).values()
надо придумать вариант без пересоздания списка, думаю тут уже одной строчкой не обойтись



Офлайн

#7 Май 15, 2010 18:54:45

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Удаление одинаковых элементов в списке.

Угу, хакерский вариант - это то, что я имел в виду.
dict(zip(l, l)).keys() короче :)



Офлайн

#8 Май 15, 2010 19:15:28

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление одинаковых элементов в списке.

Ed
dict(zip(l, l)).keys() короче smile
values идеологически правильнее :)

Без пересоздания списка не получается написать из-за побочных эффектов, либо получается громоздко, а значит не круто.



Офлайн

#9 Май 16, 2010 22:31:59

boltayka
От:
Зарегистрирован: 2009-10-07
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление одинаковых элементов в списке.

Не плохо. Спросил простейшую вещь, и чуть не разжег холивар =D
Всем спасибо!

Офлайн

#10 Май 18, 2010 03:23:53

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10031
Репутация: +  857  -
Профиль   Отправить e-mail  

Удаление одинаковых элементов в списке.

l = dict(zip(l, l)).values()
dict_values([1, 2, 3, 4, 5])
это на третьем



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version