Python初学者(列表)

时间:2013-04-03 21:05:19

标签: python python-2.7

我需要编写一个名为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

那有什么问题?

感谢大家的帮助。

6 个答案:

答案 0 :(得分: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(这是一个将任何东西变成字符串表示的函数)之外,它还强烈暗示你正在处理的是一个字符串,而不是一个列表。

答案 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]]