Найти - Пользователи
Полная версия: Условие объединенное логическим and неизвестной длинны
Начало » Python для новичков » Условие объединенное логическим and неизвестной длинны
1 2
jon34
Подскажите как создать условие объединенное логическим and неизвестной длинны? Смотрел модуль operator, не нашёл там логического and, нашёл только &.
Rodegast
Смотри на функцию all.
jon34
Rodegast
all просто проверяет, что все в итерируемом объекте True или или нет, а мне нужна логическая операция и.
Rodegast
 >>> 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])
FishHook
jon34
условие объединенное логическим and неизвестной длинны?
Постольку поскольку длина неизвестна, т.е. теоретически может быть сколь угодно большой, было бы правильным (на мой взгляд) реализовать цикл явно и брейкать его при первом же фолсе.
PooH
Страшно интересуюсь чем
jon34
all просто проверяет, что все в итерируемом объекте True или нет
отличается от
jon34
логическая операция и.
?
Rodegast
> Страшно интересуюсь чем … отличается от … ?

Возвращаемым значением, но я не думаю что ТС это будет использовать:
 >>> b and a and d
0
>>> all([b, a, d])
False
PooH
Rodegast
Возвращаемым значением
Да, это я что-то не сообразил
jon34
Rodegast
Возвращаемым значением,
PooH
Именно это поведение и было важно
PEHDOM
Можно 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
Возможно действительно проще (и ИМХО правильнее) сделать как предлагает FishHook ?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB