Python 中的以下函数可以返回一个列表,无论输入是 list
、numpy.array
还是 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
使用 add
,而不是 append
),并且并非所有迭代都支持 __getitem__
(例如发电机)。这意味着您不能过多地概括您的函数;您必须始终牢记您将支持哪些类型的输入。
或者,如果您想要支持的类型集可以从列表创建实例,您可以让 output = []
站立,但在返回之前将其转换:
return type(self)(output)
关于python - 返回类型取决于 Python 中的输入类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60283015/