Как мне добавить новые элементы в список из другого списка? - PullRequest
0 голосов
/ 16 июня 2020

У меня есть проект, который выглядит примерно так:

Переменные:

j_set = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
finish_act = [1, 3]
on_going = [5, 6, 7]
q_active = [2]
completion_time = [0, 0, 5, 0, 12, 12, 0, 0, 0, 0, 0]

Код:

t = 12
for sec in on_going:
    indx = j_set.index(sec)
    if completion_time[indx] == t:
        finish_act.append(j_set[indx])
        on_going.remove(j_set[indx])

print(finish_act)
print(on_going)

Цель - в определенный период времени, если действие заканчивается в момент t, затем его следует добавить к finish_act.

Если завершено более одного действия, то эти действия следует добавить в finish_act.

В коде, который у меня есть, оба 5 and 6 в on_going завершаются вовремя, t = 12 на основе completion_time. Но с этим кодом только один из них выбирается и добавляется в finish_act.

Есть ли способ обновить имеющийся у меня код, чтобы он учитывал такие случаи?

Любая помощь / предложение / материалы для чтения будут оценены! Спасибо!

Ожидаемый результат:

finish_act = [1, 3, 5, 6]
on_going = [7]

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Я бы использовал фильтр с лямбдой для выбора значений, которые мы хотим добавить в список finish_act. Затем вы можете перебрать тот же список и удалить элементы из on_going.

>>> on_time = list(
...     filter(lambda x: completion_time[j_set.index(x)] == t, on_going)
... )
>>> finish_act.extend(on_time)
>>> [on_going.remove(x) for x in on_time]
[None, None]

Имейте в виду, вам нужно перехватить исключения ValueError и IndexError, чтобы следовать передовым методам.

0 голосов
/ 16 июня 2020

Вы можете добавить два списка в один:

list_final = list1 + list2

Затем вы можете перетасовать это, если хотите:

import random
random.shuffle(list_final)

Извините, если это вам не помогло, но надеюсь, так оно и было.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...