0

我需要编写一个名为 make_ends 的函数,它接收一个参数 - 一个列表。它返回一个新列表,其中包含输入列表的第一项和最后一项。

这是我的代码,但它没有将它分成一个列表。我对如何去做这件事有点困惑。我需要使用 .join 功能吗?如果是这样,我该怎么做?我想我很接近。

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

这是我早期的构建,但它除了返回原始字符串之外什么也没做:

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

那有什么问题?

感谢大家的帮助。

4

6 回答 6

4

你实际上非常接近;唯一的问题是您返回的是元组而不是列表。(whatever aand bare,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,你想做什么?事实上,你会 return None,这可能是不对的。

同时,str[-2:0]要求所有在 2-before-the-end 之后但在 start 之前出现的元素。开始之前没有元素,所以这是空的。然后将原始值添加到这个空集合中,这样就得到了原始值。


另外,作为旁注,调用参数str是一个坏主意。除了隐藏内置str函数(这是一个将任何内容转换为字符串表示的函数)这一事实之外,它还强烈暗示您正在处理的是字符串,而不是列表。

于 2013-04-03T21:06:42.083 回答
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]]
于 2013-09-26T12:01:23.853 回答
1

尝试以下

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

在当前表单而不是列表中,您正在创建一个元组。这就是逗号运算符在值之间放置时所做的事情

于 2013-04-03T21:06:43.067 回答
1

您当前正在返回一个元组,而不是一个列表。只需将其包裹在方括号中即可使其成为列表:

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

但是,我会质疑你为什么首先想要一个列表。你知道你只返回两个项目,所以你不需要它是可变的——在我看来,一个元组也许就是你想要的。

于 2013-04-03T21:07:34.823 回答
0

你很亲密。您只需要将退货放入列表中。

return [x[0], x[-1]]
于 2013-04-03T21:06:53.137 回答
0
def make_ends(x):
  return [x[0], x[-1]]
于 2013-04-03T21:06:59.267 回答