簡體   English   中英

如何從列表中刪除“ ”?

[英]How do I remove ' ' from a list?

我試圖從列表中刪除“ ”,它給了我 IndexError: list out of range

我也試過 new_string.remove(' ')

def func_name(new_string):
   for k in range(len(new_string)):
       if new_string[k] == '':
           new_string = new_string[:k] + new_string[k+1:]
   return new_string

print func_name(['Title','','This','is','a','link','.'])

print func_name(['','','Hello','World!','',''])

print func_name(['',''])

你應該嘗試更pythonic的方式,像這樣:

def func_name(new_string):
    return [s for s in new_string if s != '']

print func_name(['Title', '', 'This', 'is', 'a', 'link', '.'])

print func_name(['', '', 'Hello', 'World!', '', ''])

print func_name(['', ''])

您的問題是列表縮短了,但索引仍然像原始列表一樣迭代。

有更好的方法來實現這一點(請參閱其他答案),但要修復您的實現,您可以以相反的順序進行迭代,從而避免“溢出”:

def remove_empty(s):
   for k in reversed(range(len(s))):
       if s[k] == '':
           del s[k]

這僅適用於在每次迭代中最多刪除一個元素的情況。

請注意,這會使s就地發生變化。

>>> a = ['Title','','This','is','a','link','.']
>>> remove_empty(a)
>>> a
['Title','This','is','a','link','.']

檢查一個例子:

x = ["don't", '', 13] 

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

assert x == ["don't", 13]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM