python - 返回类型取决于 Python 中的输入类型

标签 python pandas list numpy polymorphism

Python 中的以下函数可以返回一个列表,无论输入是 listnumpy.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/

相关文章:

python - 检查列表中的单词并删除 pandas dataframe 列中的那些单词

python - 使用递归选择偶数

python - 如何显示输入的数字在哪个位置?

python - pandas_ml 更改混淆矩阵图像大小

python - 在 NumPy 数组中查找重复序列的索引

python - 在for循环中获取多个关键字

python - 使用 apply 删除组中的重复项

python - 从特征中排除散点

Pandas:用字典引用另一列填充 NaN 值

python - 如何在不使用 for 循环的情况下将列表中的所有项目与整数进行比较