Уведомления

Группа в Telegram: @pythonsu

#1 Март 10, 2014 14:57:53

ingfa_1981
Зарегистрирован: 2014-01-25
Сообщения: 200
Репутация: +  1  -
Профиль   Адрес электронной почты  

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

checkio = [1, 2, 3, 2, 1]
checkio1 = []
for i in checkio:
    if i not in checkio1:
        checkio1.append(i)
checkio = []
for j in checkio1:
    if j not in checkio:
        checkio.append(j)
print(checkio)

Есть такой код нужно изменить сам список checkio, правильно ли я это сделал или же есть решения проще?
Если есть то почему? Читал на форуме похожую тему но ответа не нашел

Офлайн

#2 Март 10, 2014 15:24:55

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

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

>>> a = [1, 2, 3, 2, 3, 4]
>>> a
[1, 2, 3, 2, 3, 4]
>>> b = set(a)
>>> b
{1, 2, 3, 4}
>>> c = list(b)
>>> c
[1, 2, 3, 4]
>>>



Офлайн

#3 Март 10, 2014 15:46:28

ingfa_1981
Зарегистрирован: 2014-01-25
Сообщения: 200
Репутация: +  1  -
Профиль   Адрес электронной почты  

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

А вот список (а) изменить как ?
и наоборот вернуть все не уникальные элементы, которые повторяются?

Отредактировано ingfa_1981 (Март 10, 2014 15:52:30)

Офлайн

#4 Март 10, 2014 15:56:10

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

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

Если нужно не просто удалить дубликаты, а вообще удалить все элементы, которые встречаются 2 и больше раз, то

>>> a = [1, 2, 3, 2, 3, 4]
>>> b = set(a)    # get clear set without dublicates
>>> c = set([x for x in a if a.count(x) > 1])    # check
>>> d = list(b - c)    # use subtraction operator on sets
>>> d
[1, 4]
>>>



Отредактировано Lexander (Март 10, 2014 15:57:26)

Офлайн

#5 Март 10, 2014 16:16:51

ingfa_1981
Зарегистрирован: 2014-01-25
Сообщения: 200
Репутация: +  1  -
Профиль   Адрес электронной почты  

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

А если изменить список

a = [1, 2, 3, 2, 3, 4]
, что бы получилось
 a =  [2, 3, 2, 3]
, что нужно мне сделать ?

Отредактировано ingfa_1981 (Март 10, 2014 17:04:03)

Офлайн

#6 Март 10, 2014 20:47:17

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

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

ingfa_1981
что нужно мне сделать ?

for elem in a:
   эту строчку додумай сам 
        a.remove(elem)



Отредактировано Budulianin (Март 10, 2014 20:49:58)

Офлайн

#7 Март 10, 2014 21:06:19

ingfa_1981
Зарегистрирован: 2014-01-25
Сообщения: 200
Репутация: +  1  -
Профиль   Адрес электронной почты  

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

a = [1, 2, 3, 2, 3, 4]
for elem in a:
   if a.count(elem) == 1:
        a.remove(elem)
print(a)

спасибо

Отредактировано ingfa_1981 (Март 10, 2014 21:06:40)

Офлайн

#8 Март 10, 2014 23:38:24

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

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

Budulianin
Может быть я тебя не допонял, но мы же знаем про грабли этого приема:

>>> a=range(10)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in a:
...     a.remove(i)
...
>>> a
[1, 3, 5, 7, 9]



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#9 Март 11, 2014 00:26:18

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

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

>>> def f(lst):
...     s = set()
...     return [i for i in lst
...             if i not in s and (s.add(i) or True)]
... 
>>> checkio = [1, 2, 3, 2, 1]
>>> checkio = f(checkio)
>>> checkio
[1, 2, 3]
>>>



Отредактировано py.user.next (Март 11, 2014 00:27:17)

Офлайн

#10 Март 11, 2014 00:35:37

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

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

JOHN_16
Может быть я тебя не допонял, но мы же знаем про грабли этого приема:

Да, недописал.
 for elem in a[:]:



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version