Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 14, 2011 15:17:46

hightime
От:
Зарегистрирован: 2010-12-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Свернуть цикл

Имеется вот такой список comb:
[
,
,
,
,
,
,
,
,
,
, ]

Не обязательно с таким содержимым конечно:)
Дальше есть вот такой код:

count = 0
for i in xrange(len(comb)):
print comb[i]
for c in comb[i]:
if c > 50:
count += 1
как вы поняли, считается количество элементов больше 50.

Как мне сей скрипт записать в одну строчку? я только начал знакомится с питоном и не до конца ещё понял lambda выражения и filter'ы.



Отредактировано (Окт. 14, 2011 17:40:27)

Офлайн

#2 Окт. 14, 2011 18:40:22

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

Свернуть цикл

print sum(map(lambda x:len(filter(lambda x:x>50,x)), comb))

Офлайн

#3 Окт. 14, 2011 21:10:36

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Свернуть цикл

Вот чуть покороче и без лямбды:

print len([i for l in comb for i in l if i>50])
и еще короче:
print sum(i>50 for i in sum(comb, []))
PS: спасибо lsem за совет



Отредактировано (Окт. 15, 2011 15:58:15)

Офлайн

#4 Окт. 15, 2011 14:10:18

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

Свернуть цикл

А если убрать внешние квадратные скобки, то будет еще короче.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version