Форум сайта python.su
Подскажите как создать условие объединенное логическим and неизвестной длинны? Смотрел модуль operator, не нашёл там логического and, нашёл только &.
Офлайн
Смотри на функцию all.
Офлайн
Rodegast
all просто проверяет, что все в итерируемом объекте True или или нет, а мне нужна логическая операция и.
Офлайн
>>> a = 0 >>> b = 3 >>> d = "" >>> all([a*b, d]) False >>> all([b, d]) False >>> all([b]) True
reduce(lambda x,y: x and y, [a*b, d])
Офлайн
jon34Постольку поскольку длина неизвестна, т.е. теоретически может быть сколь угодно большой, было бы правильным (на мой взгляд) реализовать цикл явно и брейкать его при первом же фолсе.
условие объединенное логическим and неизвестной длинны?
Офлайн
Страшно интересуюсь чем
jon34отличается от
all просто проверяет, что все в итерируемом объекте True или нет
jon34?
логическая операция и.
Офлайн
> Страшно интересуюсь чем … отличается от … ?
Возвращаемым значением, но я не думаю что ТС это будет использовать:
>>> b and a and d 0 >>> all([b, a, d]) False
Офлайн
RodegastДа, это я что-то не сообразил
Возвращаемым значением
Офлайн
RodegastPooH
Возвращаемым значением,
Отредактировано jon34 (Май 25, 2017 08:16:58)
Офлайн
Можно eval использовать. Но поскольку оно выполняет любой код переданый в качестве строки избегайте вызова eval() на вводе, который вы не контролируете.
a = 1 b = 2 c = 3 d = 4 e = 5 lst =[a,b,c,d,e] lst = [str(x) for x in lst] s = ' and '.join(lst) print(s) print(eval(s) < 0) >>> 1 and 2 and 3 and 4 and 5 False
[code python][/code]
Отредактировано PEHDOM (Май 25, 2017 10:04:18)
Офлайн