2015-10-15 36 views
-2

我無法獲取代碼來使這項工作適合我的生活。從停在某個位置的列表中返回一個新列表

在本練習中,您的函數將收到一個參數,即一列 字符串。你的函數將並返回一個新的列表,只 包括從參數字符串的拷貝最多,但不包括 串kahnkahn將在列表中。

預期結果:

words_up_to_kahn(["kirk", "spock", "luke", "charlie", "kahn", "bob"]) -> ["kirk", "spock", "luke", "charlie"] 
words_up_to_kahn(["ernie", "kahn", "bert", "teal'c"]) -> ["ernie"] 

例子: 難道是這樣的?

return words[0:kahn] 

或者是這樣的:

def words_up_to_kahn(words): 
    new = "" 
    c = 0 
    while words[c] != "kahn": 
     new = new + words[c] 
     c = c + 1 
    return new 

還是別的什麼?

+3

哪裏是你的代碼? –

+0

'list.index()'在這裏可能很有用。 – Evert

+0

我添加了一些代碼,我一直試圖裸露我一直使用python不到1周 –

回答

0

這是我認爲最簡單的解決方案。

條件語句和.index("kahn")是你的朋友:

def up_to_kahn(lst): 
    return lst if ("kahn" not in lst) else lst[:lst.index("kahn")] 

assert up_to_kahn(["kirk", "spock", "luke", "charlie", "kahn", "bob"]) == \ 
    ["kirk", "spock", "luke", "charlie"] 
assert up_to_kahn(["ernie", "kahn", "bert", "teal'c"]) == ["ernie"] 

而且這顯然是從教科書複製粘貼。請不要將Stack Overflow用作家庭作業答案站點。這就是說,這是答案。

+0

非常感謝 –

+0

我通常不會有一個非常糟糕的老師,我在這個網站上了解更多的專業人士。它是一個40道題的家庭作業,這是唯一讓我悲傷的人。它的東西我們還沒有涉及。 –

+0

老實說,stackoverflow比以往任何編程類更有用,但你仍然應該做你的功課(或至少編輯複製粘貼哈哈):) –

0

如果你想要一個替代方法,用於以下itertools解決方案的設計要做到這一點:

from itertools import takewhile 

def words_up_to_kahn(word_list): 
    return list(takewhile(lambda x: x != 'kahn', word_list)) 

print words_up_to_kahn(["kirk", "spock", "luke", "charlie", "kahn", "bob"]) 
print words_up_to_kahn(["ernie", "kahn", "bert", "teal'c"]) 

,並提供:

['kirk', 'spock', 'luke', 'charlie'] 
['ernie'] 
相關問題