Форум сайта python.su
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)
Офлайн
33
>>> 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] >>>
Офлайн
1
А вот список (а) изменить как ?
и наоборот вернуть все не уникальные элементы, которые повторяются?
Отредактировано ingfa_1981 (Март 10, 2014 15:52:30)
Офлайн
33
Если нужно не просто удалить дубликаты, а вообще удалить все элементы, которые встречаются 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)
Офлайн
1
А если изменить список
a = [1, 2, 3, 2, 3, 4]
a = [2, 3, 2, 3]
Отредактировано ingfa_1981 (Март 10, 2014 17:04:03)
Офлайн
33
ingfa_1981
что нужно мне сделать ?
for elem in a: эту строчку додумай сам a.remove(elem)
Отредактировано Budulianin (Март 10, 2014 20:49:58)
Офлайн
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)
Офлайн
221
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]
Офлайн
857
>>> 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)
Офлайн
33
JOHN_16
Может быть я тебя не допонял, но мы же знаем про грабли этого приема:
for elem in a[:]:
Офлайн