ValueError: min () arg - пустая последовательность - PullRequest
0 голосов
/ 30 апреля 2019

Я в настоящее время кодирую модель дорожного движения. При определении расстояния между передней машиной я застрял на минимуме (). Это как-то пустая последовательность.

Traceback (последний последний вызов):

[93, 72, 55]

Файл "C: / Users / Try Arie / PycharmProjects / traffic_model / traffic.py", строка 44, в

55

[]

d = min (список)

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, чтобы потом использовать его для следующего кода

1 Ответ

0 голосов
/ 30 апреля 2019

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.

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