У меня есть собственный класс, определенный так:
class points:
def __init__(self, x=0, h=0, l=0):
self.x = x
self.h = h
self.l = l #bool location, 0 for start point, 1 for endpoint
Далее в моем коде я успешно создаю список этих points
, и ошибка возникает, когда я пытаюсь выполнить следующее условное выражение:
for i in points_list:
if (sorted_points[i].l == 0):
Python думает, что sorted_points[i].l
не является целым числом или срезом (он думает, что это points
объект), но единственное, что может быть, это целое число (я даже пытаюсь распечатать список значений sorted_points
l
, и все они равны 1 или 0 ), так что я очень запутался.
i
не является целым числом или срезом. points_list
— это список точек, поэтому i
— это точка.
Даже если i
является индексом, зачем вам перебирать один список и использовать его в качестве индексов в другом списке, если только два списка не связаны параллельно. Но sorted_points
предположительно упорядочен не так, как points_list
.
Синтаксис for el in my_list
перебирает элементы my_list
.
Смотреть:
class A:
pass
l = [A(), A(), A()]
for el in l:
print(type(el)) # <class '__main__.A'>
Так что в вашем случае вы должны использовать свой i
в качестве экземпляра точки.
for i in points_list:
if i.l == 0: # if it's boolean, you should even write if not i.l
...
Если вы хотите перебирать индексы, используйте range
for i in range(len(points_list)):
if not sorted_points[i].l:
...
Вы используете
i
в качестве индекса дляsorted_points
. Как вы думаете, что такоеi
?