Найти - Пользователи
Полная версия: Фильтрация списка по условиям
Начало » Python для новичков » Фильтрация списка по условиям
1
ajib6ept
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. Не содержит ‘/’
flip89
list(x for x in mylist2 if x and not x.endswith('.php') and not '/' in x)
JOHN_16
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
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