2017-04-26 65 views
2

我想根據目標值在列表中刪除項目的方法。這裏所說:刪除字符串/字的方法

def remove (self, target_value): 
    str_list = self.str_list 
    pos = 0 
    for item in str_list: 
     if item != target_value: 
      str_list[pos] = item 
      pos += 1 
    del str_list[pos:] 
    return str_list 

不幸的是這僅適用於一個字即

如果爲str_list =蘋果(它基本上轉變到列表[ '一', 'P', 'P','L 」, 'E']在我init方法)

target_item = 'A'

輸出= pple。

需要什麼樣的變化,以使其發揮作用的幾個單詞,即

如果爲str_list =我吃了一個蘋果

target_item =吃

輸出=我一個蘋果

PS :不允許內置方法。

+0

我無法使用.remove()或任何此類內置方法。 –

+0

@asettouf OP表示不允許內置方法 –

+0

您的問題不是很具體:您是否必須只刪除一次或多次?無論如何,看看切片和遞歸。 –

回答

3

直接的方法是創建一個空列表,並將除目標外的每個單詞都推入內部。返回然後該列表:

def remove_token(list_val, target_val): 
    size=0 
    for item in list_val: 
     size += 1 
    str_list = [None]*size 
    pos = 0 
    counter_target = 0 
    for item in list_val: 
     if item != target_val: 
      #print(pos) 
      str_list[pos] = item 
      pos += 1 
     else: 
      counter_target +=1 
    return str_list[:-counter_target] 

以下:

print(remove_token(["I", "ate", "an", "apple"], "ate")) 

給出的輸出:

['I', 'an', 'apple'] 

注:只是爲了說清楚,我使用Python 3.6(它應該工作除了print聲明(用於Python 2.x)之外的早期版本)

+0

如果沒有len()函數,你能提出這個建議嗎? –

+1

@phoenix當然,你去 – Adonis

+1

謝謝!欣賞它! –