你实际上非常接近;唯一的问题是您返回的是元组而不是列表。(whatever a
and b
are,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
函数(这是一个将任何内容转换为字符串表示的函数)这一事实之外,它还强烈暗示您正在处理的是字符串,而不是列表。