Форум сайта python.su
Vaisai
еще такой вопрос, берем первое число, сравниваем его со всеми числами файла, и он повторяется, как определить позицию где он повторился?
from operator import itemgetter l=[1,2,3,4,5,6,7,8,9,10,1,2,3,4,12,1,45,1,2,1] for value in l: enum_l=enumerate(l) print value, "===>", res = filter(lambda (index, val): val==value, enum_l) print map(itemgetter(0), res)
Офлайн
FishHook Вывод не красивый, создается впечатление, что каждый элемент повторяется. Слегка поправил Ваш код:
from collections import deque l=deque([1,2,3,4,5,6,7,8,9,10,1,2,3,4,12,1,45,1,2,1]) tested = set() count = 0 while l: value = l.popleft() count += 1 if value in tested: continue tested.add(value) res = [x[0] for x in enumerate(l, count) if x[1] == value] if res: print(value, "===>", res)
Офлайн
А, ну тогда так
from operator import itemgetter l=[1,2,3,4,5,6,7,8,9,10,1,2,3,4,12,1,45,1,2,1] for value in set( x for x in l if l.count(x)>1 ): enum_l=enumerate(l) res = filter(lambda (index, val): val==value, enum_l)[1:] print value, "===>", map(itemgetter(0), res)
Отредактировано FishHook (Апрель 3, 2013 08:18:54)
Офлайн
Ну и однострочник
from operator import itemgetter res=filter (lambda (a,b): len(b)>0, [ (x, map(lambda i:i[0], list(y)[1:]) ) for x, y in groupby(sorted(enumerate(l), key=itemgetter(1)), key=itemgetter(1))] ) print a
Офлайн
мой вариант :)
from collections import defaultdict l=[1,2,3,4,5,6,7,8,9,10,1,2,3,4,12,1,45,1,2,1] res = defaultdict(list) for pos, item in enumerate(l): res[item].append(pos) print [(k,v[1:]) for k,v in res.items() if len(v)>1]
Отредактировано bismigalis (Апрель 3, 2013 12:09:44)
Офлайн
Grinader,
1. Одна тема = один вопрос
2. Текст вопроса в теле, Ваши вордовские вложения пусть читает Билли Гейтс, в РФ стандарт документа - odt.
Офлайн