Уведомления

Группа в Telegram: @pythonsu

#1 Май 24, 2017 10:33:59

jon34
Зарегистрирован: 2016-02-14
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

Условие объединенное логическим and неизвестной длинны

Подскажите как создать условие объединенное логическим and неизвестной длинны? Смотрел модуль operator, не нашёл там логического and, нашёл только &.

Офлайн

#2 Май 24, 2017 10:46:22

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2683
Репутация: +  182  -
Профиль   Отправить e-mail  

Условие объединенное логическим and неизвестной длинны

Смотри на функцию all.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Май 24, 2017 10:53:05

jon34
Зарегистрирован: 2016-02-14
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

Условие объединенное логическим and неизвестной длинны

Rodegast
all просто проверяет, что все в итерируемом объекте True или или нет, а мне нужна логическая операция и.

Офлайн

#4 Май 24, 2017 11:07:44

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2683
Репутация: +  182  -
Профиль   Отправить e-mail  

Условие объединенное логическим and неизвестной длинны

 >>> 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])



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Май 24, 2017 12:23:10

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Условие объединенное логическим and неизвестной длинны

jon34
условие объединенное логическим and неизвестной длинны?
Постольку поскольку длина неизвестна, т.е. теоретически может быть сколь угодно большой, было бы правильным (на мой взгляд) реализовать цикл явно и брейкать его при первом же фолсе.



Офлайн

#6 Май 24, 2017 12:31:56

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Условие объединенное логическим and неизвестной длинны

Страшно интересуюсь чем

jon34
all просто проверяет, что все в итерируемом объекте True или нет
отличается от
jon34
логическая операция и.
?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#7 Май 24, 2017 15:00:16

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2683
Репутация: +  182  -
Профиль   Отправить e-mail  

Условие объединенное логическим and неизвестной длинны

> Страшно интересуюсь чем … отличается от … ?

Возвращаемым значением, но я не думаю что ТС это будет использовать:

 >>> b and a and d
0
>>> all([b, a, d])
False



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#8 Май 25, 2017 04:52:57

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Условие объединенное логическим and неизвестной длинны

Rodegast
Возвращаемым значением
Да, это я что-то не сообразил



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#9 Май 25, 2017 08:16:48

jon34
Зарегистрирован: 2016-02-14
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

Условие объединенное логическим and неизвестной длинны

Rodegast
Возвращаемым значением,
PooH
Именно это поведение и было важно

Отредактировано jon34 (Май 25, 2017 08:16:58)

Офлайн

#10 Май 25, 2017 09:52:51

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Условие объединенное логическим and неизвестной длинны

Можно 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 ?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Май 25, 2017 10:04:18)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version