Найти - Пользователи
Полная версия: сортировка списков
Начало » Python для новичков » сортировка списков
1 2 3
miko2009
да нет, тут я очень сильно ошибся , код вообще не правильный, нужно что бы из списка “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
что бы понять к чему эти цифры
a=[2, 1, 2, 2, 1, 4]-#это количество экземпляров каждого типа
b=[2, 6, 4]-#это количество экземпляров типов в каждом из трех классов
с=[1,4,1]-#это три класса и каждая цифра это количество типов класса
miko2009
все решение найдено
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)
FishHook
это плохое решение
miko2009
давайте лучше
FishHook
Ничего я вам не дам, голова есть на плечах - думайте.
Я вам подскажу. Если программа дважды делает одно и то же - это плохая программа.
shaptmos
это плохое решение

а ежели так:

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)
py.user.next
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']

Как ты мог сортировать, если сортировка там не подходит?
miko2009
miko2009
ну желательно что бы не по порядку 123456 а именно как они возникают в списке
это влияет на время отклика программы и не более. Но я уже сказал что отсортировал set как мне нужно, не просто
.sort()
miko2009
еще одна задачка на сортировку :
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 методы упрощающие этот алгоритм



This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB