Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数追加/扩展_Python - Fatal编程技术网

Python 函数追加/扩展

Python 函数追加/扩展,python,Python,Python中的append和extend方法本质上是不起作用的,它们修改被调用方并返回None 是否有其他方法可以完成这些方法的工作并获取一个新列表作为返回值 考虑这个例子: def myfun(first, *args): for elem in [first].extend(args): print elem 显然,这是行不通的 有没有一种方法可以构建一个新的列表,而不是被迫编写以下内容 def myfun(first, *args): all_args = list(

Python中的append和extend方法本质上是不起作用的,它们修改被调用方并返回None

是否有其他方法可以完成这些方法的工作并获取一个新列表作为返回值

考虑这个例子:

def myfun(first, *args):
  for elem in [first].extend(args):
    print elem
显然,这是行不通的

有没有一种方法可以构建一个新的列表,而不是被迫编写以下内容

def myfun(first, *args):
   all_args = list(first)
   all_args.extend(args)

   for elem in all_args:
     print elem

谢谢。

您可以将其改写为:

[first] + args
这就是你想要的吗

您还可以定义自己的类型,除了更改之外,还可以在这些操作中返回列表本身:

>>> class MyList(list):
...   def append(self, x):
...     super(MyList, self).append(x)
...     return self
...   def extend(self, lst):
...     super(MyList, self).extend(lst)
...     return self
... 
>>> l = MyList([1, 2, 3])
>>> l.append(4)
[1, 2, 3, 4]
>>> l.extend([5, 6, 7])
[1, 2, 3, 4, 5, 6, 7]
>>> l
[1, 2, 3, 4, 5, 6, 7]

谢谢:。真不敢相信我竟然忘了这个。
>>> class MyList(list):
...   def append(self, x):
...     super(MyList, self).append(x)
...     return self
...   def extend(self, lst):
...     super(MyList, self).extend(lst)
...     return self
... 
>>> l = MyList([1, 2, 3])
>>> l.append(4)
[1, 2, 3, 4]
>>> l.extend([5, 6, 7])
[1, 2, 3, 4, 5, 6, 7]
>>> l
[1, 2, 3, 4, 5, 6, 7]