Python初学者(列表)

2024-06-28 19:34:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

怎么了?你知道吗

谢谢大家的帮助。你知道吗


Tags: 函数字符串代码功能版本rightgo列表
3条回答

您实际上非常接近;唯一的问题是返回的是元组而不是列表。(不管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]]

然后你问另一个问题:

Here was my earlier build, but it didn't do anything except return the original string:

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

让我们一步一步地讲一遍。你知道吗

首先,str >= 2将字符串与数字进行比较。在Python2.x中,要么所有字符串都大于所有数字,要么所有字符串都小于所有数字。(这由实现决定)所以,这不是一个非常有用的检查。你知道吗

也许你想改为检查if len(str) >= 2?但即使这样,我也不确定那会给你带来什么。如果长度是0或1,您想做什么?实际上,您应该返回None,这可能是不对的。你知道吗

同时,str[-2:0]要求所有在2之后-在结束之前,但在开始之前的元素。在开始之前没有元素,所以这是空的。然后将原始值添加到这个空集合中,得到原始值。你知道吗


另外,作为补充说明,调用参数str是个坏主意。除了它隐藏了内置的str(这是一个将任何内容转换为其字符串表示形式的函数)之外,它还强烈暗示您要处理的是一个字符串,而不是一个列表。你知道吗

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

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

然而,我想问你为什么要一份清单放在首位。你知道你只返回两个项目,所以你不需要它是可变的-在我看来,也许一个元组是你想要的毕竟在这里。你知道吗

请尝试以下操作

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

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

相关问题 更多 >