2013-09-21 63 views
2

我有一個簡單的問題,如果我有一個Python中的字符串數組:['a','b','c','d']有沒有一種方法可以比較另一種字符串,如果它存在於數組中,則刪除該值以及後面的所有值?我是新來的蟒蛇,我不是太熟悉的語法,但僞代碼:刪除Python中的數組值

s = 'b' 
array = ['a', 'b', 'c', 'd'] 

if b exists in array 
    remove b and elements after 

因此新的陣列,簡直是[「一」]。任何幫助將非常感激!

回答

2

替代方案:

from itertools import takewhile 
array = takewhile(lambda x: x != "b", array) 
# then if array must be a list (we can already iterate through it) 
array = list(array) 

if "b" in array: 
    del array[array.index("b"):] 

try: 
    del array[array.index("b"):] 
except ValueError: 
    # "b" was not in array 
    pass 
+0

@Elazar POITROAE(過早優化是萬惡之源)!我會說這個'del'比分配給一個空列表更可讀,它也適用於不是列表的迭代。 – rlms

+2

我剛剛寫下最後一個版本是最好的:)。 (在這種情況下'del'確實沒有綁定,所以我將刪除我的答案)。 – Elazar

+1

完美的作品,謝謝!由於多個建議而接受的答案:) –

7
s = 'b' 
array = ['a', 'b', 'c', 'd'] 

if s in array: 
    del array[array.index(s):] 
+1

這是一個應該被接受的答案。 –