Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 19, 2015 18:38:54

miko2009
Зарегистрирован: 2015-12-19
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

сортировка списков

да нет, тут я очень сильно ошибся , код вообще не правильный, нужно что бы из списка “b” мы брали значение первое и искали это значение как сумму во втором , тоесть 2=2, потом берем 6 и исключаем уже используемые значения из “а” в итоге получим 6=1+2+2+1, тут что бы получить 6 мы сложили 4 числа из списка “а” и в итоге мы должны получить:

с=[1,4,1]
я тут немного починил код

a=[2, 1, 2, 2, 1, 4]
b=[2, 6, 4]
c=list()
j=0
for z1 in b:
    i=0
    for z2 in a:
        if b[j]==(sum(a[j:i])):
            c.append(len(a[j:i]))
            break
        i=i+1
    j=j+1
print(c)
и я даже знаю почему не получается , но не знаю как починить , код во втором цикле начинает с 3 числа , а по идее должен отбросить 5 чисео и начать с последнего шестого

Отредактировано miko2009 (Дек. 19, 2015 18:39:43)

Офлайн

#2 Дек. 19, 2015 18:43:44

miko2009
Зарегистрирован: 2015-12-19
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

сортировка списков

что бы понять к чему эти цифры

a=[2, 1, 2, 2, 1, 4]-#это количество экземпляров каждого типа
b=[2, 6, 4]-#это количество экземпляров типов в каждом из трех классов
с=[1,4,1]-#это три класса и каждая цифра это количество типов класса

Отредактировано miko2009 (Дек. 19, 2015 18:44:21)

Офлайн

#3 Дек. 19, 2015 19:03:10

miko2009
Зарегистрирован: 2015-12-19
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

сортировка списков

все решение найдено

a=[2, 1, 2, 2, 1, 4,3,4]
b=[2, 6, 4,7]
c=list()
j=0
for z1 in b:
    i=0
    for z2 in a:
        if b[j]==(sum(a[sum (c[:]):i+1])):
            c.append(len(a[sum (c[:]):i+1]))
            break
        i=i+1
    j=j+1
print(c)

Офлайн

#4 Дек. 19, 2015 19:49:57

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

сортировка списков

это плохое решение



Офлайн

#5 Дек. 19, 2015 19:50:51

miko2009
Зарегистрирован: 2015-12-19
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

сортировка списков

давайте лучше

Офлайн

#6 Дек. 19, 2015 19:55:59

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

сортировка списков

Ничего я вам не дам, голова есть на плечах - думайте.
Я вам подскажу. Если программа дважды делает одно и то же - это плохая программа.



Офлайн

#7 Дек. 19, 2015 21:37:05

shaptmos
Зарегистрирован: 2015-12-12
Сообщения: 27
Репутация: +  4  -
Профиль   Отправить e-mail  

сортировка списков

это плохое решение

а ежели так:

a=[2, 1, 2, 2, 1, 4,3,4]
b=[2, 6, 4,7]
count = 0
sum_a = 0
c = []
for x in b:
    while x != sum_a:
        sum_a += a.pop(0)
        count += 1
    else:
        c.append(count)
        count = 0
        sum_a = 0
print(c)

Офлайн

#8 Дек. 20, 2015 03:11:52

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

сортировка списков

miko2009
я сделал как указал shaptmos, выполнил сет двух списков, отсортировал как мне нужно , и далее извлек первый arg в один список , а второй arg в другой. Все (как я и думал) очень просто по крайней мере получил нужный результат …..
Ну, вот его результат
>>> y
['a', 'a', 'b', 'd', 'a', 'd', 'b', 'd']
>>> z
['1', '1', '1', '1', '2', '2', '3', '3']
>>>
порядок возникновения элементов в списке нарушен.

Вот то, что должно получиться
miko2009
a=['a','a','b','d','b','d','d','a']
b=['1','1','1','1','3','3','2','2']

Как ты мог сортировать, если сортировка там не подходит?



Отредактировано py.user.next (Дек. 20, 2015 03:13:38)

Офлайн

#9 Дек. 20, 2015 08:45:21

miko2009
Зарегистрирован: 2015-12-19
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

сортировка списков

miko2009
ну желательно что бы не по порядку 123456 а именно как они возникают в списке
это влияет на время отклика программы и не более. Но я уже сказал что отсортировал set как мне нужно, не просто
.sort()

Офлайн

#10 Дек. 20, 2015 09:39:23

miko2009
Зарегистрирован: 2015-12-19
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

сортировка списков

еще одна задачка на сортировку :

a=[7.45, 9.84, 3.32, 4.79, 6.45, 7.33, 9.61, 9.61, 4.31, 4.92, 8.65, 10.03]
b=[2, 1, 2, 2, 1, 4]
вчера до 3ночи пытался решить, сегодня с утра так решил
a=[7.45, 9.84, 3.32, 4.79, 6.45, 7.33, 9.61, 9.61, 4.31, 4.92, 8.65, 10.03]
b=[2, 1, 2, 2, 1, 4]
h=list()
n=list()
k=list()
g=list()
i=0
for z1 in b:
    p=z1
    e=sum(h[:])
    n.append(e)
    h.append(p)
    d=sum(h[:])
    k.append(d)
    r=sum(a[e:d])
    g.append(r)
    i=i+1
    if i>len(b)-1:
        break
print(g)

в итоге получил
 [17.29, 3.32, 11.24, 16.939999999999998, 9.61, 27.910000000000004]
как упростить ? на данный момент взял в коде за аналогию интеграл с пределами интегрирования, но точно уверен что есть в синтаксисе Python методы упрощающие этот алгоритм



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version