python - 返回类型取决于 Python 中的输入类型
问题描述
无论输入是 a list
、 anumpy.array
还是 a ,Python 中的以下函数都可以返回一个列表pandas.Series
。
编写它以使输出类型与输入类型相同的pythonic方法是什么?
def foo(input):
output = []
output.append(input[0])
for i in range(1, len(input)-1):
if (some condition):
output.append(input[i])
output.append(input[-1])
return output
解决方案
一般来说,如果不对输入的内容做出很多假设,您就无法做到这一点。
第一步是确保这output
是正确的类型,而不是列表。
output = type(self)()
但是,这假定无论您的输入是什么类型,您都可以通过不带参数调用它来创建一个实例。
接下来,您必须将自己限制在output
所有预期输入都支持的操作上。并非所有可迭代对象都支持append
方法(set
例如,uses add
、not append
),也并非所有可迭代对象都支持__getitem__
(例如生成器)。这意味着您不能过多地概括您的功能。您必须始终牢记您将支持哪些类型的输入。
或者,如果您想要支持的类型集可以从列表中创建一个实例,您可以output = []
静置,但在返回之前对其进行转换:
return type(self)(output)
推荐阅读
- xpath - 动态 ID 的 XPath 选择器
- git - 用于解决并行加法的 Diff/merge 算法
- etl - 关于 apache nifi:互联网上的端点之间是否有流文件管道?
- python - FutureWarning:元素比较失败;从熊猫数据框中删除所有行时
- javascript - 是否可以使用箭头函数作为变量
- sql - 转换为 base64
- c++ - 为什么需要WCHAR相关的代码处理
- spring-boot - Springboot健康检查请求被@RequestMapping(value="/**")
- linux - 如何编写没有从地址和寄存器地址的消息,并且重复开始?
- c# - 选定对象的 LINQ 计数字段