SORU
2 EKİM 2010, CUMARTESİ


Dizeleri listesinden boş dizeleri çıkarın

Python dizeleri listesinden tüm boş karakterleri kaldırmak istiyorum.

Benim fikrim bu gibi görünüyor:

while '' in str_list:
    str_list.remove('')

Daha pythonic herhangi bir şekilde bunu yapmak için var mı?

CEVAP
2 EKİM 2010, CUMARTESİ


filter kullanırdım:

str_list = filter(None, str_list) # fastest
str_list = filter(bool, str_list) # fastest
str_list = filter(len, str_list)  # a bit of slower
str_list = filter(lambda item: item, str_list) # slower than list comprehension

Testler:

>>> timeit('filter(None, str_list)', 'str_list=["a"]*1000', number=100000)
2.4797441959381104
>>> timeit('filter(bool, str_list)', 'str_list=["a"]*1000', number=100000)
2.4788150787353516
>>> timeit('filter(len, str_list)', 'str_list=["a"]*1000', number=100000)
5.2126238346099854
>>> timeit('[x for x in str_list if x]', 'str_list=["a"]*1000', number=100000)
13.354584932327271
>>> timeit('filter(lambda item: item, str_list)', 'str_list=["a"]*1000', number=100000)
17.427681922912598

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FlippinWindows | #1 Windows Tutorial Channel!

    FlippinWindo

    23 Mayıs 2010
  • Matt Davis

    Matt Davis

    4 ŞUBAT 2006
  • TimMinchinLive

    TimMinchinLi

    23 ŞUBAT 2009