python - 功能附加/扩展

标签 python

Python 中的方法 appendextend 本质上不是函数式的,它们修改被调用者并返回 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

谢谢。

最佳答案

>>> def append(lst, elem):
...     return lst + [elem]
... 
>>> append([1, 2, 3], 4)
[1, 2, 3, 4]
>>> def extend(lst1, lst2):
...   return lst1 + lst2
... 
>>> extend([1, 2], [3, 4])
[1, 2, 3, 4]

这是你想要的吗?

你也可以定义你自己的类型,它在这些操作上返回列表本身,除了改变:

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

关于python - 功能附加/扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5314820/

相关文章:

python - 用Python开发GUI:Tkinter与PyQt

python - 如何使用元组列表中的元组中的值作为函数的参数?

python - 使用 PIL 调整图像大小会显着改变颜色

python - 如何使用 json_normalize 扁平化嵌套 Json 数据

python - 无法安装旧版本的tensorflow : No matching distribution found for tensorflow==1. 9.0

python - 通过 FTP 下载 zip 文件并在 Python 中提取内存中的文件

python - 使用 Django 将文件发送到 GCS 的最佳方式

python - 在 PySpark 中使用 'window' 函数按天分组时出现问题

python - 在模块内部使用时未定义 itertools

python - 具有已存在表的 Django ManyToMany 字段