Хорошо, я могу сказать вам, что не так с синтаксисом вашего условного выражения: по крайней мере, вам нужно включить len(o)
в скобки.
[len(o) for o in octate_n]
Эта структура, [expr for var in list]
, называется пониманием списка, и это сокращение для "оценки expr
для каждого элемента list
, с var
, установленным для элемента, и создания нового списка результатов. «. В исходном коде у вас не было expr
, поэтому Python жаловался.
Теперь, даже если вы исправите это, вы получите
if [len(o) for o in octate_n] == 3:
, которая все еще имеет проблему с тем, что вы сравниваете список с числом. Хотя технически вы можете это сделать, это, вероятно, не означает, что вы ожидаете: список никогда не будет равен числу, потому что это разные объекты. Хотя не совсем понятно, что ты пытался сделать. Если вы хотите узнать, имеют ли все элементы списка длину 3, вы должны написать
if all([len(o) == 3 for o in octate_n]):
или, более эффективно,
if all(len(o) == 3 for o in octate_n):
Обратите внимание на отсутствие квадратных скобок в последующем утверждении. Это потому, что вам на самом деле не нужно составлять список из результатов; вам просто нужно иметь возможность просматривать их по одному и проверять, все ли они правдивы. Пропуск скобок - вот что указывает на это в Python. (Вы можете сделать это только в скобках.)