Форум сайта python.su
как отфильтровать список от строк с парными символами то есть те которые находятся рядом вот так-
fffds
fffdj
fffdk
fffdl
fffjj
fffjk
fffjl
А не так fgsdf !
Офлайн
решение в лоб
str = "fffas"
x=0
while x !=len(str):
if str[x] == str[x+1]:
True
break
else:
False
if False:
del str
Отредактировано (Авг. 18, 2010 21:37:33)
Офлайн
Alex_KutsanНе могу понять как это со списком строк в файле сделать !?
решение в лобstr = "fffas"
x=0
while x !=len(str):
if str[x] == str[x+1]:
True
break
else:
False
if False:
del str
Отредактировано (Авг. 19, 2010 01:01:23)
Офлайн
если список типа list
к примеру
list = ["fffds","fffdj","fffdk","fffdl","fffjj","fffjk,"fffjl"]
for str in list:
while x !=len(str):
if str[x] == str[x+1]:
True
break
else:
False
if False:
str = ""
nstr = 0
l = len(list)
while nstr!= l:
if list[nstr]=="":
for x in list [nstr:]:
list[x] = list[x+1]
l = l-1
nstr = nstr +1
Офлайн
Только не благодари меня:
>>> list_src = ['fffds', 'fffdj', 'fffdk', 'fffdl', 'fffjj','fffjk', 'fffjl', 'fgsdf']
>>> list_prs = []
>>> list_sng = []
>>> for s in list_src:
... [list_sng, list_prs][1 in map(len, map(set, zip(list(s) + [None], [None] + list(s))))].append(s)
...
>>> list_prs
['fffds', 'fffdj', 'fffdk', 'fffdl', 'fffjj', 'fffjk', 'fffjl']
>>> list_sng
['fgsdf']
Офлайн
bw
TC же просил отфильтровать, а не разделить…
полагаю, что в качестве фильтрующего генератора Ваш вариант выглядит более читабельно
from itertools import imap, izip
(x for x in lst if 1 not in imap(len, imap(set, izip(x[1:], x[:-1]))))
Отредактировано (Авг. 19, 2010 10:03:05)
Офлайн
pyuserВот за это мне и нравится Питон :)
TC же просил отфильтровать, а не разделить…
полагаю, что в качестве фильтрующего генератора Ваш вариант выглядит более читабельноfrom itertools import imap, izip
(x for x in lst if 1 not in imap(len, imap(set, izip(x[1:], x[:-1]))))
Офлайн
Спасибо всем очень помогло!
Офлайн
А я додуматся только смог до:
def list_filter_classic(list_src):
list_dst=[]
for string in list_src:
for i in xrange(len(string)-1):
flag=False
if string[i]==string[i+1]:
flag=True
break
if flag is False:
list_dst.append(string)
return list_dst
Офлайн
а я вообще не понял чего надо сделать.
Офлайн