[英]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.