2013-04-03 124 views
0

我需要編寫一個名爲make_ends的函數來接收一個參數 - 一個列表。它返回一個新的列表,其中包含輸入列表的第一個和最後一個項目。Python初學者(列表)

這是我的代碼,但它沒有將它分成列表。我對如何解決這個問題有點困惑。我需要使用.join功能嗎?如果是這樣,我該怎麼做?我覺得我很接近。

def make_ends(x): 
    return x[0], x[-1] 

這裏是我的早期版本,但它沒有做任何事情,除了返回原始字符串:

def go_right(str): 
    if str >= 2: 
      a = str[-2:0] + str 
      return a 

有什麼錯呢?

感謝大家的幫助。

+0

你很近,你只需要把x [0]和x [-1]放在一個列表中,比如return [x [0],x [-1]] – Joe 2013-04-03 21:07:18

回答

4

你其實非常接近;唯一的問題是你要返回一個元組而不是一個列表。 (無論ab是,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(這是一個將任何東西變成字符串表示形式的函數)的事實之外,它還強烈暗示你正在處理的是一個字符串,而不是一個列表。

+0

爲什麼在這裏downvote?解釋有什麼問題嗎? – abarnert 2013-04-03 21:10:17

+0

幾乎所有對這個問題的答案都得到了一個沒有解釋的downvote。奇怪。 – JaredPar 2013-04-04 00:01:45

1

請嘗試以下

def make_ends(x): 
    return [x[0], x[-1]] 

在目前的形式,而不是你正在創建一個元組的列表。這是逗號運算符在值

+0

爲什麼有人低估了這個答案?當然,它沒有任何其他信息不在前面的兩個答案中,但是沒有任何錯誤,誤導,嚴重解釋或其他低估值。 – abarnert 2013-04-03 21:09:34

0

之間做的事情,你非常接近。你只需要將回報投入列表。

return [x[0], x[-1]] 
+0

我可能會錯過一些東西,但似乎downvote是沒有根據的。 – GoingTharn 2013-04-03 21:27:25

+0

同意。你的回答並沒有增加任何不在前3的內容,但它仍然是一個非常好的答案。出於某種原因,所有的答案都得到了降低,這個問題也是如此,沒有任何解釋。我想這沒什麼關係,因爲他們最終還是以他們應該得到的相同方式下令(我相信你會得到更多代表積分,加上積分低於沒有投票的積分),但這仍然很煩人。 – abarnert 2013-04-04 00:16:27

+0

是的,我發佈了我的評論後,我看到了驅動器。它沒有添加任何內容,但與其他人同時發佈(基本上所有人都一次點擊,因爲這是一個簡單的問題) – GoingTharn 2013-04-04 15:22:51

0
def make_ends(x): 
    return [x[0], x[-1]] 
1

您目前正在返回一個元組,而不是一個列表。只需將它放在方括號使它列表:

def make_ends(x): 
    return [x[0], x[-1]] 

不過,我會問你爲什麼要擺在首位的列表。你知道你只返回兩個項目,所以你不需要它是可變的 - 在我看來,也許這就是你想要的元組。

+1

我注意到有人低估了每一個答案,但這一個。那是因爲你是大衆向下的人,還是因爲你在大衆向下的人出現後發佈了你的回答? – abarnert 2013-04-03 21:13:40

+0

無罪,您的榮幸! (fwiw,我upvoted你的答案...) – 2013-04-03 21:14:39

+0

是的,它看起來像某人只是由於某種原因做了一個驅動器downvote - 一切。雖然我在JaredPar的回答中添加了一條評論,詢問爲什麼它被低估,但有人低估了我的答案。當我在那裏發表評論時,有人低估了其他3個答案......噢,從長遠來看,這並沒有太大的區別。 – abarnert 2013-04-03 21:20:51

1

確實有解決這一任務

一個多種方式將是最常見的,可能是最傳統的

def make_ends(x): 
    return [x[0], x[-1]] 

另一種方法

def make_ends(x): 
    finished = [] 
    finished.append(x[0]) 
    finished.append(x[1]) 
    return finished 

而且,你可以把字符串列表中,允許該功能使用字符串

def make_ends(x): 
    x = list(x) 
    return [x[0], x[-1]]