Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 12, 2011 04:56:47

r3m1x
От:
Зарегистрирован: 2011-07-30
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Упрощение условия (многократное or)

Здравствуйте. Подскажите пожалуйста можно как-нибудь “упростить” условие?
if “1” in a or “2” in “a” or “3” in a or “4” in a or “5” in a or “6” in a or “7” in a…:
pass
else:
pass



Офлайн

#2 Сен. 12, 2011 06:31:16

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

Упрощение условия (многократное or)

for x in map(str, range(1,8)):
if x in a: pass
else: pass



Отредактировано (Сен. 12, 2011 06:31:46)

Офлайн

#3 Сен. 12, 2011 06:55:45

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Упрощение условия (многократное or)

any( map(lambda x:str(x) in a, xrange(1,8)) )
если это поиск символа в строке, то проще через regex

Отредактировано (Сен. 12, 2011 06:56:58)

Офлайн

#4 Сен. 12, 2011 08:01:56

Virtuos86
От:
Зарегистрирован: 2010-11-17
Сообщения: 33
Репутация: +  1  -
Профиль   Отправить e-mail  

Упрощение условия (многократное or)

Тогда уж лучше
any(str(x) in a for x in xrange(1, 8)).
Хотя способов много.



Офлайн

#5 Сен. 13, 2011 10:24:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9967
Репутация: +  856  -
Профиль   Отправить e-mail  

Упрощение условия (многократное or)

>>> s = 'abcd1defg2hijk'
>>> set(s) & set("1234567890")
{'1', '2'}
>>> set(s) & set("34567890")
set()
>>>



Офлайн

#6 Сен. 13, 2011 17:54:14

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Упрощение условия (многократное or)

С множествами напрашивается само собой как наиболее естественное, но еще один оптимизированный вариант:

if any( c in a for c in '0123456789'):
pass
или
if any('0'<=c<='9' for c in a):
pass



Отредактировано (Сен. 14, 2011 03:57:31)

Офлайн

#7 Сен. 17, 2011 11:51:08

r3m1x
От:
Зарегистрирован: 2011-07-30
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Упрощение условия (многократное or)

Ребят, большое спасибо! )



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version