我目前正在编码高速公路交通模型。在确定前车之间的距离时,我陷入了min()的困境。它以某种方式是空序列。
回溯(最近通话最近一次):
[93,72,55]
文件
中的“ C:/ Users / Try Arie / PycharmProjects / traffic_model / traffic.py”,第44行55
[]
d = min(dlist)
ValueError:min()arg是一个空序列
我检查了距离列表的值。它应该在内部,并使用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,所以我可以将其用于下一个代码
答案 0 :(得分:0)
dlist
将为i
最大的cars[i].x
为空。对于此i
,测试cars[j].x > cars[i].x
永远不会成立,因此,您绝不会在dlist
后面添加任何内容。
正如您在输出中看到的那样,这确实发生了:在i
的第一次迭代中,您发现x
大于53的所有汽车:[93, 72, 55]
,并且还打印了55。在下一次迭代中,您发现x
大于93的所有汽车。没有这样的汽车,因此您得到了空的dllist []
,然后min
引发了异常。
您要么必须明确对待空的特殊情况,要么在测试中使用>=
而不是>
。
顺便说一句,仅按x
对汽车进行排序会更快/更容易吗?然后在排序列表中的位置k
,您拥有x
大于或等于cars[k].x
的所有汽车中的最小汽车。