【问题标题】:Python Declaring a function with an index [closed]Python用索引声明一个函数[关闭]
【发布时间】:2013-10-23 17:28:33
【问题描述】:

我想编写一个函数,它接受三个参数 - type1type2index - 并且应该返回 type1 并在索引处插入 type2 的元素。

这里是一些示例 I/O

do_something ([21, 32, 23], ['f', 'g', 'c'], 2)

[21, 32, 'f', 'g', 'c', 23]

这是我目前所拥有的:

def do_something(type1, type2, index)

return do_something

显然我在这里做错了什么,但我不确定是什么。

【问题讨论】:

  • 我并不是要粗鲁,但到目前为止你所得到的什么都不是......你刚刚写了一个规范。你觉得你应该怎么做?
  • 如何在第二个列表@tobias_k 的第 i 个和第 i+1 个索引之间插入一个列表的元素。
  • 如何调用参数索引?
  • 示例中调用函数时,第三个参数 (2) 绑定到参数(索引)。修复语法问题(缺少冒号和缩进)后,它会解析得很好。现在你必须一些参数(和他们命名的值)。
  • 如果your question 被关闭,不要只是创建一个新的匿名帐户,以便再次发布。

标签: python function python-3.x parameters


【解决方案1】:

索引不是一种特殊的参数。你会像其他任何东西一样传递它。你所拥有的很好,但你必须弄清楚如何在你的 def 和 return 语句之间编写函数。查看文档,如果您对它们有具体问题,请返回,并展示您尝试过的内容。

【讨论】:

    【解决方案2】:

    如果您的意思是不确定如何按索引访问列表,请使用索引访问运算符,即[]

    >>> x = [1, 2, 3]
    >>> x
    [1, 2, 3]
    >>> x[1] = 99
    >>> x
    [1, 99, 3]
    >>> x[2] = [1,2,3]
    >>> x
    [1, 99, [1, 2, 3]]
    

    交互式解释器是您的朋友! dir(list)help() 函数也很友好。

    【讨论】:

      【解决方案3】:

      如果参数是列表的索引,那么“索引”作为参数名称非常合适。在 python 中有一些你应该避免使用的名称,例如“list”或“str”,但“index”不是其中之一。如果您认为参数的含义不清楚,您可以随时在函数中添加注释或文档字符串。


      至于函数体,您可以使用这种表示法将另一个列表插入到列表中:

      def do_something(type1, type2, index):
          type1[index:index] = type2
      

      它的作用是:它将列表type1 的元素从index(包括)到index(不包括)并替换给定列表。由于切片为空,因此实际上没有替换任何元素,但第二个列表在该位置插入

      请注意,这将修改原始列表type1。使用它来创建并返回一个新列表:

      def do_something(type1, type2, index):
          return type1[:index] + type2 + type1[index:]
      

      这需要type1 的元素直到index(不包括),并将它们与type2type1 的元素从index 开始(包括)连接起来。

      在这两种情况下,结果都是

      [21, 32, 'f', 'g', 'c', 23]
      

      【讨论】:

        【解决方案4】:

        我认为这回答了你的问题并做你想做的事:

        def do_something(list1, list2, index):
            list1[index:index] = list2
            return list1
        
        print(do_something([21, 32, 23], ['f', 'g', 'c'], 2))
        

        输出:

        [21, 32, 'f', 'g', 'c', 23]
        

        【讨论】:

        • 这个和上一个有什么区别?
        • 它不会调用将list2 嵌套在list1 内的insert() 方法——而是有效地将list2 的各个元素插入到list1 中指定索引处。
        • 小修正:它并没有真正将元素插入list1,而是在不修改任何一个列表的情况下创建一个新列表。 ;-)
        • @tobias_k:挑剔,挑剔... ;-)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多