你其实非常接近;唯一的问题是你要返回一个元组而不是一个列表。 (无论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
(这是一个将任何东西变成字符串表示形式的函数)的事实之外,它还强烈暗示你正在处理的是一个字符串,而不是一个列表。
你很近,你只需要把x [0]和x [-1]放在一个列表中,比如return [x [0],x [-1]] – Joe 2013-04-03 21:07:18