alt dize I en pythonic yolu nedir merak eğer.Kaldır dize listesi
list_dirs = ('C:\\foo\\bar\\hello.txt', 'C:\\bar\\foo\\.world.txt', 'C:\\foo\\bar\\yellow.txt')
unwanted_files = ('hello.txt', 'yellow.txt)
İstenilen çıktı:
list_dirs = (C:\\bar\\foo\.world.txt')
Böyle this gibi benzer soruları uygulamaya çalıştık, ama yine de kaldırılmasını yapma mücadele ve bir listeye bu özel uygulama uzatmak ediyorum.
Şimdiye kadar bu yapmış:
for i in arange(0, len(list_dirs)):
if 'hello.txt' in list_dirs[i]:
list_dirs.remove(list_dirs[i])
Bu işler ama muhtemelen daha temiz bir yol değil ve ben hello.txt veya yellow.txt I kaldırmak isterseniz daha önemlisi, bir liste desteklemez Bir veya kullanmak zorunda kalacaktı. Teşekkürler. Ayrıca ya da ithal etmek sakıncası yoksa lambda'da
print filter(lambda x: x.split('\\')[-1] not in unwanted_files, list_dirs)
#['C:\\bar\\foo\\.world.txt']
bir filtre işlevi kullanabilirsiniz
>>> [l.split('\\')[-1] for l in list_dirs]
['hello.txt', '.world.txt', 'yellow.txt']
@PM 2Ring gibi görünecektir bir liste anlama olarak dize)
tting. arange – dudas
aralığına benzer. Yinelediğiniz bir koleksiyonu değiştirmek güvenli değildir. –