Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 3, 2013 06:12:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Сортировка данных из файла

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)
        



Офлайн

#2 Апрель 3, 2013 07:28:48

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Сортировка данных из файла

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)



Офлайн

#3 Апрель 3, 2013 08:17:46

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Сортировка данных из файла

А, ну тогда так

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)

Офлайн

#4 Апрель 3, 2013 09:30:44

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Сортировка данных из файла

Ну и однострочник

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    



Офлайн

#5 Апрель 3, 2013 11:06:19

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Сортировка данных из файла

мой вариант :)

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)

Офлайн

#6 Окт. 5, 2013 15:50:37

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Сортировка данных из файла

Grinader,
1. Одна тема = один вопрос
2. Текст вопроса в теле, Ваши вордовские вложения пусть читает Билли Гейтс, в РФ стандарт документа - odt.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version