Форум сайта python.su
0
Добрый день, подскажите пожалуйста.
Есть список путей, к примеру:
a = ('C:\test' , ‘C:\test\1’, ‘C:\test\2’, ‘C:\test\2\3’)
как исключить из списка C:\test и C:\test\2, так как они входят в C:\test\1 и C:\test\2\3
Офлайн
1
for x in a[:]: a=filter (lambda t: not (x.startswith(t) and x != t), a)
Отредактировано Hyyudu (Июль 16, 2014 16:16:18)
Офлайн
0
Hyyudu: Скобки я проглядел, действительно в квадратных должны быть.
Попробовал в действие код, он выдал:
C:\test\1
C:\test\2
C:\test\2\3
C:\test\2 входит в C:\test\2\3, его по идее нужно было отбросить.
Офлайн
103
У меня все правильно работает!
>>> a = [r'C:\test' , r'C:\test\1', r'C:\test\2', r'C:\test\2\3'] >>> for x in a: ... a = filter(lambda t: not (x.startswith(t) and x != t), a) ... >>> a ['C:\\test\\1', 'C:\\test\\2\\3']
Офлайн
857
Patrik
как исключить из списка C:\test и C:\test\2, так как они входят в C:\test\1 и C:\test\2\3
Отредактировано py.user.next (Июль 17, 2014 04:15:17)
Офлайн
1
Patrik, вы слеши в строках не экранировали, может, в этом дело
Офлайн