【发布时间】:2020-05-10 22:59:22
【问题描述】:
在 python 中,字符串可以循环/迭代,如列表、元组等。我们对 dict 和 bytes 有相同的要求。因此,使用 isinstance 与任何 collections.abc 类都会在列表、字节、字典等上给出 True。
我正在寻找一种优雅的方式来检查我是否收到了一个方法的类似列表的参数:列表、元组、集合、numpy 数组、熊猫系列等?
你有什么建议不是 test if iterable 但既不是 string 也不是 dict 等。
我真的在尝试匹配非开发人员对列表是什么的直观理解。
谢谢。
【问题讨论】:
-
你认为什么是“类列表”?您想具体包括哪些特征,以及您想排除哪些特征?为什么要排除字符串但包含元组?
-
检查是否为实例
and not type(your_var) not in [str, bytes] -
@Boris 这就是我实际要做的,也是我想要避免的(不是“优雅”)
-
@Carcigenicate List like 是对列表的直观理解:一些可以用项目符号列出的元素,就像任何非开发人员都会理解的那样。如果我问我妈妈“toto”是否是一个列表,她会说不......
-
考虑到这是一个相当随意的分离,我认为手动硬编码类型与您将获得的一样好。如果有使用的方法模式等,你可以找到一个特定的基类来检查。不过这里不是这样。
标签: python python-3.x string types iterable