【发布时间】:2022-11-16 07:51:35
【问题描述】:
我正在尝试用“mylist”中的项目填充我的变量“test”。如果满足条件 totaltime < 6,则迭代从 mylist[0] 重新开始,因此列表永远不会超过“3”(mylist 中的第二个索引)。但是,我希望如果满足条件,则迭代将继续填充第二个列表。我怎样才能确保我的迭代从中断的地方继续?结果如下:
mylist = [1, 2, 3, 4, 5, 6, 7, 8]
time = [2, 2, 2, 5, 1, 6, 5, 1]
test = [[], [], [], []]
我尝试了以下
mylist = [1, 2, 3, 4, 5, 6, 7, 8]
time = [2, 2, 2, 5, 1, 6, 5, 1]
test = [[], [], [], []]
totaltime = 0
for i in range(len(test)):
for jobs in range(len(mylist)):
if totaltime < 6:
test[i].append(mylist[jobs])
totaltime += time[jobs]
totaltime = 0
print(test)
结果:
[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]
[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]
[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]
但是,如上所述,我希望我的迭代不再重新开始。因此,期望的结果应该如下所示:
test = [1, 2, 3], [4,5], [6], [7, 8]
【问题讨论】:
-
我真的不明白你想要的结果列表的标准。
-
为什么
3包含在test[0]中和在test[1]?为什么6不存在? -
@juanpa.arrivillaga 6 无处可去,因为相应的时间 (6) 不严格小于 6,因此 if 语句的计算结果为 false 并会跳过它。
-
@juanpa.arrivillaga 你混淆了我的列表和时间列表。时间列表是添加到总时间的时间列表,因此 7 和 8(5 和 1)的时间有效。同样 3 被包含两次,我相信预期的输出是 [1, 2, 3], [4, 5], [7, 8]
-
@actuallyatiger 啊,是的,当然。这是有道理的(你描述的输出)