[英]Return type dependent on input type in Python
无论输入是list
、 numpy.array
还是pandas.Series
,Python 中的以下函数都可以返回列表。
编写它以便输出类型与输入类型相同的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
使用add
,而不是append
),并且并非所有迭代器都支持__getitem__
(例如生成器)。 这意味着你不能过多地概括你的函数; 您必须始终牢记您将支持哪些类型的输入。
或者,如果您要支持的类型集可以从列表创建实例,您可以让output = []
保持不变,但在返回之前转换它:
return type(self)(output)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.