我需要编写一个名为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
那有什么问题?
感谢大家的帮助。
答案 0 :(得分:4)
你其实很亲密;唯一的问题是你要返回一个元组而不是一个列表。 (无论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
(这是一个将任何东西变成字符串表示的函数)之外,它还强烈暗示你正在处理的是一个字符串,而不是一个列表。
答案 1 :(得分:1)
尝试以下
def make_ends(x):
return [x[0], x[-1]]
在当前表单而不是列表中,您创建了一个元组。这是逗号运算符在值
之间执行的操作答案 2 :(得分:1)
您目前正在返回一个元组,而不是列表。只需将其包装在方括号中即可成为一个列表:
def make_ends(x):
return [x[0], x[-1]]
但是,我问你为什么要首先列出一个列表。你知道你只返回了两个项目,所以你不需要它是可变的 - 在我看来,也许你想要的是一个元组。
答案 3 :(得分: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]]
答案 4 :(得分:0)
return [x[0], x[-1]]
答案 5 :(得分:0)
def make_ends(x):
return [x[0], x[-1]]