Форум сайта python.su
857
>>> type({}.keys())
<type 'list'>
>>>Офлайн
13
Мой мозг слишком мал, чтобы осознать этот поток сознания.
Офлайн
0
Что выдает super(type({1:1}.keys())) в третьем? Либо оно обязано быть полиморфным с list.
Отредактировано (Май 19, 2010 11:16:25)
Офлайн
0
pasaranaxДумал как избавиться от enumerate. Неожиданно сработал такой код:
модный вариант:l = [e for i,e in enumerate(l) if e not in l[:i]]
data = [data.pop(0) for i in data]
Отредактировано (Май 19, 2010 16:09:38)
Офлайн
0
неработает же
>>> data =
>>> data =
>>> data
Отредактировано (Май 19, 2010 16:10:13)
Офлайн
0
ZubchickДа. Примерно разобрался. Сработало, если бы функция работала немного по другому. Как-то так:
неработает же
data = [1, 2, 3, 1, 2, 3, 1, 2, 3]
def rem(data, i):
while i in data: data.remove(i)
return i
data = [rem(data, i) for i in data]
Офлайн
0
Спасибо, тоже разобрался, благо есть инет, по книгам не удалось бы решить проблему
Офлайн
0
Вот метод без пересоздания списка, но тут удаляются первые вхождения дублирующихся элементов.
data = [1, 2, 3, 4, 1, 2, 3, 5]
for i, e in enumerate(data):
if data.pop(i) not in data:
data.insert(i, e)
for e in data:
if data.count(e) > 1:
data.remove(e)
Отредактировано (Май 19, 2010 17:51:51)
Офлайн
0
pasaranaxТам тоже лажа на что-то типа *20
лажу написал, вот так лучше
for i in xrange(len(data)-1, -1, -1):
if data.count(data[i]) != 1: del data[i]
Офлайн
857
pasaranaxтретий
Что выдает super(type({1:1}.keys())) в третьем?
>>> super(type({}.keys()))
<super: <class 'dict_keys'>, NULL>
>>>>>> super(type({}.keys()))
<super: <class 'list'>, NULL>
>>>>>> l = [1, 2, 3, 4, 1, 2, 3, 5]
>>> l = list(dict(zip(l, l)).values())
>>> l
[1, 2, 3, 4, 5]
>>>
Kogrom
Думал как избавиться от enumerate. Неожиданно сработал такой код:
>>> l = [1, 2, 3, 4, 1, 2, 3, 5]
>>> l = [l.pop(0) for i in l]
>>> l
[1, 2, 3, 4]
>>>
pasaranax
Вот метод без пересоздания списка
>>> l = [1, 2, 3, 4, 1, 2, 3, 5]
>>> l = l*2
>>> l
[1, 2, 3, 4, 1, 2, 3, 5, 1, 2, 3, 4, 1, 2, 3, 5]
>>> for e in l:
... if l.count(e) > 1:
... l.remove(e)
...
>>> l
[4, 2, 2, 4, 1, 2, 3, 5]
>>>
Kogromxrange() - это во втором :)
Си-стиль циклов рулит:
Отредактировано (Май 20, 2010 00:57:21)
Офлайн