Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 30, 2013 14:52:51

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Фильтрация списка по условиям

mylist2 = ['', 'login.php', 'D-mon', 'pro', 'MishkaGammy', 'logout.php?r=http://site.ru/blogs/1', 
			'registration.php', 'balance/', 'nickname/comments/', 'mav123', 'messages/']
print mylist2
for m in mylist2:
	if '' == m : mylist2.remove(m)
	elif '/' in m : mylist2.remove(m)
	elif '.php' == m[-4:]: mylist2.remove(m)
print mylist2

['', 'login.php', 'D-mon', 'pro', 'MishkaGammy', 'logout.php?r=http://site.ru/blogs/1', 'registration.php', 'balance/', 'nickname/comments/', 'mav123', 'messages/']
['login.php', 'D-mon', 'pro', 'MishkaGammy', 'registration.php', 'nickname/comments/', 'mav123']
[Finished in 0.1s]

Не могу понять почему не получается. Задача отфильтровать список по трем условиям:
1. Не пустой
2. Не заканчивается на .php
3. Не содержит ‘/’



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#2 Дек. 30, 2013 14:59:38

flip89
От:
Зарегистрирован: 2011-10-21
Сообщения: 28
Репутация: +  2  -
Профиль   Отправить e-mail  

Фильтрация списка по условиям

list(x for x in mylist2 if x and not x.endswith('.php') and not '/' in x)



Офлайн

#3 Дек. 31, 2013 05:04:10

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Фильтрация списка по условиям

flip89
зачем нужна конструкция list( ( x for x …) ? заменить на генератор списка:

[x for x in mylist2 if x and not x.endswith('.php') and not '/' in x]
Ибо это негативно сказывается на скорости:
>> timeit.timeit("list(x for x in m if x and not x.endswith('.php') and not '/' in x)", 'from __main__ import m')
201.78063893318176
>>> timeit.timeit("[x for x in m if x and not x.endswith('.php') and not '/' in x]", 'from __main__ import m')
154.40407705307007



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version