如何在另一个列表的列表中添加新元素?

时间:2020-06-16 03:23:40

标签: python-3.x indexing

我有一个像这样的项目:

变量:

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 个答案:

答案 0 :(得分:1)

我将使用带有lambda的过滤器来选择我们要附加到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异常才能遵循最佳实践。

答案 1 :(得分:0)

您可以将两个列表添加为一个:

list_final = list1 + list2

然后,您可以根据需要洗牌:

import random
random.shuffle(list_final)

很抱歉,如果这没有帮助您,但希望能帮助您。