【问题标题】:Writing a function which returns a modified list with ! after every item in a list编写一个返回修改列表的函数!在列表中的每个项目之后
【发布时间】:2018-03-12 02:51:56
【问题描述】:

所以我遇到了一个障碍,试图编写一个接受单个参数、一个列表的函数,并且该函数应该返回一个添加了“!”的修改列表在列表中每个项目的末尾之后。所以这就是我到目前为止所拥有的:

def add_enthusiasm_to_list(list):

    new_list = []
    for i in list:
        enthusiasm = i + '!'
        new_list.append(enthusiasm)
        return(new_list)

print(add_enthusiasm_to_list(['hi', 'hello']))

print(add_enthusiasm_to_list(['a', 'b', 'c']))

但到目前为止我只能得到每个列表的第一项,所以我的输出是

['hi!'] 第一个和

['a!'] 第二个。

对我来说,修改它以使列表中的每个项目在最后返回一个感叹号的最佳方法是什么? 谢谢!

【问题讨论】:

  • 您到return 新列表,仅在函数的最后。通过在for 循环的中间返回new_list,您只能在返回之前将一项添加到new_list

标签: python list function


【解决方案1】:

完成for 循环后,您必须使用return。 像这样:

def add_enthusiasm_to_list(list):

    new_list = []
    for i in list:
        enthusiasm = i + '!'
        new_list.append(enthusiasm)
    return(new_list)

print(add_enthusiasm_to_list(['hi', 'hello']))

print(add_enthusiasm_to_list(['a', 'b', 'c']))

注意return 是如何缩进的,因此它位于函数中for 循环的末尾。如果您不这样做,该函数将在您的第一个 ilist 中执行 for 循环后立即返回。

【讨论】:

  • 非常感谢!这让我有点发疯,它告诉我现在要正确检查我的缩进。
  • 您在函数体中的缩进错误,可能是由于简单的粘贴到 SO 问题。 (当然,这个问题只有在你回答一个实际上是关于缩进的问题时才会出现……)
【解决方案2】:

其他人指出了语法错误,但这里有一种使用列表理解的方法:

new_list = [x + "!" for x in my_list]

或者作为一个函数:

def add_enthusiasm_to_list(my_list):
    return [x + "!" for x in my_list]

另外,不要将变量命名为 list。尽管在您的示例中它仅限于您的功能范围,但这是不好的做法。

【讨论】:

    【解决方案3】:

    这里是获取您正在寻找的格式的代码:

    def add_enthusiasm_to_list(list):
            '''
            Model a function that adds !
            to the end of a list item
            '''
    
            new_list = []
            for i in list:
                 i = i + '!'
                 new_list.append(i)
    
            return new_list
    

    打印(add_enthusiasm_to_list(['hi', 'hello']))

    打印(add_enthusiasm_to_list(['a', 'b', 'c']))

    这是输出:

    ['hi!', 'hello!']
    ['a!', 'b!', 'c!']
    
    1. 我们像您一样创建函数,将列表作为参数传递。
    2. 我创建了一个名为 new_list 的空列表,就像您所做的那样。
    3. 我创建了 for 循环,它遍历列表 (i) 中的每个项目,列表是参数(我们将作为 arg 传递的列表)。
    4. 我将 i(列表项)的值更改为 i + "!"。您将变量命名为 i 热情,它工作正常。你可以保留它。我将 (i) 的每个实例附加到 new_list,然后最终在循环外返回到 new_list,这样当您执行该函数时,您将获得一个完全格式化的列表,最后带有 !(enthusiasm)寻找。我在我的代码和您的代码之间看到的区别在于您在 for 循环中返回了新格式化的列表,我认为这意味着它仅迭代列表中的第一项,然后返回,而不返回整个列表。将 return 语句移到 for 循环之外似乎是您唯一的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多