你其實非常接近;唯一的問題是你要返回一個元組而不是一個列表。 (無論a
和b
是,a, b
是這兩件事情的元組,就像[a, b]
是這兩件事情的清單。)來解決這個是調用list
做一個列表出來的元組的
的一種方式:
def make_ends(x):
return list((x[0], x[-1]))
但簡單的方法來做到這一點是隻是爲了創造擺在首位的列表:
def make_ends(x):
return [x[0], x[-1]]
你那麼問另一個問題:
這裏是我的早期版本,但它沒有做任何事情,除了返回原始字符串:
def go_right(str):
if str >= 2:
a = str[-2:0] + str
return a
讓我們通過這一步一步來。
首先,str >= 2
正在比較字符串與數字。在Python 2.x中,所有字符串都比所有數字都大,或者所有字符串都小於所有數字。 (這是由實施決定的。)所以,這不是一個非常有用的檢查。
也許你想檢查if len(str) >= 2
而不是?但即使如此,我不確定那會給你帶來什麼。如果長度是0或1,你想要做什麼?因爲它是,你會返回None
,這可能是不正確的。
同時,str[-2:0]
要求所有在2之前但在開始之前出現的元素。開始前沒有元素,所以這是空的。然後,將原始值添加到此空集合中,以便獲得原始值。
另外,作爲附註,調用參數str
是一個壞主意。除了隱藏內置str
(這是一個將任何東西變成字符串表示形式的函數)的事實之外,它還強烈暗示你正在處理的是一個字符串,而不是一個列表。
你很近,你只需要把x [0]和x [-1]放在一個列表中,比如return [x [0],x [-1]] – Joe 2013-04-03 21:07:18