我有這樣的名單:Python從列表中刪除特定的標記
['8 ', '27', '90+1 ','27','90+3','47']
我的目標是讓這樣的:
['8', '27','90','27','90','47']
我怎樣才能去掉「+」標誌和列表中的下一個數字?
我有這樣的名單:Python從列表中刪除特定的標記
['8 ', '27', '90+1 ','27','90+3','47']
我的目標是讓這樣的:
['8', '27','90','27','90','47']
我怎樣才能去掉「+」標誌和列表中的下一個數字?
您可以使用下面的表達式:
[x.split('+',1)[0] for x in data]
隨着data
原始列表:
>>> [x.split('+',1)[0] for x in data]
['8 ', '27', '90', '27', '90', '47']
因此,我們使用split()
將字符串轉換成字符串的列表,通過+
分裂。 1
是可選的,但會阻止系統創建更多元素。然後我們拿第一個子列表。使用正則表達式來去除加和以下字符
謝謝您提供豐富的答案! –
聲音做一個合乎邏輯的方式:
import re
l = ['8 ', '27', '90+1 ','27','90+3','47']
newl = [re.sub("\+.*","",x) for x in l]
我將建立一個發生在一個字符串的方法,檢查其是否具有在它的「+」號和刪除它和它後面的所有內容。
像這樣:
def cleanmark(string):
if "+" in string:
return string.split('+')[0]
return string
然後我會映射它原來的名單上。
a = ['8 ', '27', '90+1 ','27','90+3','47']
a = map(lambda x: cleanmark(x), a)
這應該足以去除'+'內容。
Python 3需要轉換爲列表。地圖不再這樣做 –
也因爲你做了一個功能而刪除lambda。只要通過cleanmark –
感謝您的建議,Python 3的公平點,只嘗試了代碼2.7 – modr00cka
做這樣的事情:
original_list = ['8 ', '27', '90+1 ','27','90+3','47']
list_modified = [item.split('+')[0] for item in original_list]
你可以按照這個過程:
list = ['8 ', '27', '90+1 ','27','90+3','47']
list1 = []
for k in list:
if '+' in k:
list1.append(k.split('+')[0])
else:
list1.append(k)
print(list1)
如何刪除列表中的 「+」 標誌和未來的數字?
我對這句話的解釋是你想更新當前列表而不是創建一個新列表,就像所有其他答案一樣。這樣可以避免使用兩次所需的內存,而且速度可能更快。
def remove_plus_marks(l):
for i in range(len(l)):
k = l[i].find('+')
if k != -1:
l[i] = l[i][:k]
這裏我們編輯當前列表而不是創建一個新列表,所以我們不必爲所有項目做內存分配。我們也使用find
方法代替split
,因爲它更快。
因此,你刪除'+ 1'和'+ 3',你不*計算它? –
物品可以有多個「+」或單個「+」嗎? –
只需使用'.split()'。並嘗試自己一次做某件事,而不是要求其他人做這樣一件小事。 – Delgan