2013-04-03 123 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]]