ValueError: min() arg is an empty sequence

ValueError: min() arg is an empty sequence

我目前正在编写高速公路交通模型。在决定前车之间的距离时,我被困在 min()。它不知何故是一个空序列。

Traceback (most recent call last):

[93, 72, 55]

File "C:/Users/Try Arie/PycharmProjects/traffic_model/traffic.py", line 44, in

55

[]

d = min(dlist)

ValueError: min() arg is an empty sequence

我检查了距离列表的值。它应该在内部并使用 min(),我会将最低值分配给 d。但它没有

class car:

    def __init__(self, no, x, v):
        self.no = no
        self.x = x
        self.v = v


for i in range(N):
    cars.append(car(i+1, randint(0, 100), 0))

for i in range(N):

    dlist = []

    for j in range(N):
        if cars[j].x > cars[i].x:
            dlist.append(cars[j].x)

    print(dlist)

    d = min(dlist)

    print(d)

我想要值 d 55,这样我就可以将它用于我的下一个代码

dlist 将为 cars[i].x 具有最大值的 i 清空。对于此 i,测试 cars[j].x > cars[i].x 永远不会为真,因此您永远不会将任何内容附加到 dlist.

正如您在输出中看到的那样,确实发生了这种情况:在 i 的第一次迭代中,您发现所有 x 大于 53 的汽车:[93, 72, 55] 并且您还打印55. 在下一次迭代中,您会发现 x 大于 93 的所有汽车。没有这样的汽车,因此您会得到一个空的 dllist [],然后 min 引发异常。

您要么必须明确处理 empty 的特殊情况,要么在测试中使用 >= 而不是 >

顺便说一句,按 x 对汽车进行排序不是 faster/easier 吗?然后在排序列表中的 k 位置,在 x 大于或等于 cars[k].x.

的所有汽车中,您拥有最小的汽车