2017-03-09 110 views
-5

有沒有辦法從列表中刪除一個項目,以這種方式返回一個沒有刪除元素的新列表?Python:從列表中刪除一個項目,但返回一個新列表

例如, 如果我有一個列表[a,b,c,d,e],然後list.newRemove(a) = [b,c,d,e]

我想這樣做的,我可以創造一個功能這樣的方式:

func(element, list.newRemove(element)) 

,這樣我可以做

func(a, list.newRemove(a)) 

這將通過a[b,c,d,e]

我知道我可以通過將元素和整個列表傳遞給函數,然後在函數中創建一個新的subList而不使用傳入的元素來完成此操作。但是,我覺得按照我的要求去做會更好。

這是否只是一個基本上不pythonic方式做到這一點?我學會了用功能語言進行編程,並且老習慣也很難實現。

編輯:誤寫成集,而不是名單

EDIT2:這裏是我最終想要做一個例子:

myList中= [ '一', 'B', 'C',」 d']

爲元件在myList中: 功能(元件,myList.newRemove(元件)

凡函數不會在元件和在列表中的元素的其餘部分之間的計算

+1

我不知道我完全理解這個問題。究竟是什麼問題? – timgeb

+1

listcomp:'[x for x in l if x!= a]'也許 –

+2

@ Jean-FrançoisFabre:這將刪除所有實例...問題有點不確定... –

回答

0

像這樣的東西?

def newListRemove(element, list): return element, filter(lambda x: x != element, list) 

list = [1,2,3,4] 
print removeFromList(2, list) 
print list 

回報

(2, [1, 3, 4]) 
[1, 2, 3, 4] 
+0

這不會修改原來的'list'嗎? **編輯**:它的作用:[!在線試用(https://tio.run/nexus/python2#@[email protected]@SUKmXkKOVZAhSWlRXkKfvl5IDVgFTl6EN0aqZpgPlQJWJ4rtxJkoIKtQrShjoKRjoKxjoJJLBdXQVFmXgm6rUBpiHJNqDyE9/8/AA 「巨蟒2 - TIO的Nexus」) –

+0

編輯我的答案 – r3v3r53

0

我覺得這是你的意思,但我不知道。

def newRemove(element, x): 
    x.remove(element) 
    return element, x 

print(newRemove("a", ["a", "b","c", "d"])) 

返回:

('a', ['b', 'c', 'd']) 

希望這會有所幫助。

沒有內置的功能來做你在問什麼,你必須做一個。

而只是一個小提示,如果你正試圖找到一個函數,你不記得是什麼被稱爲或不知道它是否存在,對此:類型list.不是你正試圖編輯的列表但字面上list.和命中選項卡,然後應該提出所有可以編輯列表的功能。他們中的大多數都是自我解釋的,但很容易通過反覆試驗來弄清楚他們做了什麼。

希望這有助於您所有的未來編碼努力

+0

我認爲你在正確的軌道上。但是,我不想更改原始列表。我想我可以寫一個函數來做我想問的問題 - 我更想知道python是否有類似的東西。 –

+0

@HarryBaker讓你說你想讓它返回'('a',['a ','b','c','d'])'?或者你想讓它創建一個新的列表,只是'['b','c','d']'? –

+0

我只想讓它返回一個新的列表,只是[b,c,d]。我將編輯我的原始評論,以證明我爲什麼要這樣做。 –

相關問題