Форум сайта python.su
0
Доброго дня ! у меня такая проблема , пару дней пытаюсь сравнить два списка
a=['a','a','b','b','d','d','a','d'] b=['1','1','1','3','3','2','2','1']
a=['a','a','b','d','b','d','d','a'] b=['1','1','1','1','3','3','2','2']
b[4]
z[6]
a[4]
y[6]
Отредактировано miko2009 (Дек. 19, 2015 11:04:50)
Офлайн
88
>>> class T: pass
>>> a = T()
>>> a.__class__
<class '__main__.T'>
>>> a.__class__.__name__
'T'
Офлайн
0
а для новичка не могли бы расшифровать
Офлайн
4
Я.честно говоря, ничего половину не понял, но что сказать имею
1. Есть ли необходимость в том, чтобы сортировка в списке b была бы именно по порядку? ну то есть, в данном случае или можно все решить просто банальной сортировкой (l.sort() or sorted())
2. Чтобы порядок следования сохранялся надо данные связать, наверное, как то так:
a=['a','a','b','b','d','d','a','d'] b=['1','1','1','3','3','2','2','1'] new_list = [(c,d) for c,d in zip(b,a)] new_list.sort() y = [arg[1] for arg in new_list] z = [arg[0] for arg in new_list]
Офлайн
0
1. ну желательно что бы не по порядку 123456 а именно как они возникают в списке , тоесть может быть целая туча 29 а потом пару 4, и желательно что бы и в списке они попали именно в порядке появления, тоесть сначала все 29 а потом все 4.
2. щя буду тестить 
P.s. смысл в том что бы унаследовать порядок сортировки значений списка класса “b” в список “a”, как то так
Офлайн
857
miko2009
суть задачи такая, список “b” это список классов(их имена), а список “а” это список экземпларов класса с именами.
miko2009Если новичок, то вряд ли это метапрограммирование. А если это не метапрограммирование, то это неправильный подход.
а для новичка не могли бы расшифровать
miko2009Там надо брать пары и перекидывать их в новый список, выбирая подходящие. То есть сортировка не подойдёт.
1. ну желательно что бы не по порядку 123456 а именно как они возникают в списке
Отредактировано py.user.next (Дек. 19, 2015 15:02:12)
Офлайн
0
я сделал как указал shaptmos, выполнил сет двух списков, отсортировал как мне нужно , и далее извлек первый arg в один список , а второй arg в другой. Все (как я и думал) очень просто
по крайней мере получил нужный результат …..
P.S. я новичок в программировании (пару месяцев) но решаю серьезные задачи из области конструирования сложных инженерных объектов в РФ, дописываю мини программы под определенную программу (Autodesk Revit) в основном все завязано на численных методах, комбинаторики. У меня уже есть мне доступные классы , а далее я с ними провожу манипуляции , поэтому и возникают такие вопросы как этот. Никакого метапрограммирования 
Офлайн
0
вторая часть вопроса 
a=[2, 1, 2, 2, 1, 4] b=[2, 6, 4] c=list() i=0 j=0 for z1 in b: for z2 in a: if b[j]==(sum (a[j:i+1])): c.append(i+1) i=i+1 j=j+1 print(c)
с=[1,4,1]
Офлайн
88
miko2009Могу. Питоновские объекты содержат информацию об их принадлежности к классам. Но в случае если речь шла не об питоновских классах с объектами, полезная информация всё равно присутствовала: хранить пару в едином объекте.
а для новичка не могли бы расшифровать
Офлайн
4
почему то второй проход по j не проходитну почему не проходит, очень даже проходит.
a=[2, 1, 2, 2, 1, 4] b=[2, 6, 4] c=list() i=0 j=0 cycle = 0 for z1 in b: for z2 in a: print(sum(a[j:i+1])) if b[j]==(a[j:i+1]): c.append(i+1) i=i+1 j=j+1 cycle +=1 print('cycle', cycle) print(c)
Офлайн