python - 检查变量是否为列表的最佳方法是什么?

标签 python list variables dictionary tuples

<分区>

我找到了这 3 种检查方法,但我不知道哪种方法最好:

x = ['Bla', 'Bla', 'Bla', 'etc']

if isinstance(a, list): print('Perfect!')
if type(a) is list:     print('Incredible!')
if type(a) == type([]): print('Awesome!')

哪个更好?

此外,我可以使用这些方法来检查 x 是否为字符串、元组、字典、int、float 等?如果这是可能的,在前两种方法中我必须将列表转换为元组、字符串、字典、int、float 等(不是吗?),但在第三种方法中?我必须使用 ()、{}、'',还有什么用于 int 和 float?

最佳答案

这些都表达了不同的东西,所以这实际上取决于你想要实现的目标:

  • isinstance(x, list) 检查 x 的类型是 list 还是 list 作为一个父类(为了简单起见,让我们忽略 ABCs 等);
  • type(x) is list 检查 x 的类型是否恰好是 list;
  • type(x) == list 检查类型是否相等,这与相同类型不同,因为元类可以想象地覆盖 __eq__

所以为了表达以下内容:

  • isinstance(x, list):x 就像一个list
  • type(x) is list:x 恰好是一个 list不是一个子类<
  • type(x) == list:x 是一个列表,还是使用元类魔术伪装成 list 的其他类型。

关于python - 检查变量是否为列表的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43106905/

相关文章:

python - 根据具有特殊条件的单词之间的逗号拆分字符串 - Python

javascript - JavaScript 中的 [] 是什么意思?

python - 使用全息 View 时如何自动隐藏 Bokeh 工具栏

python - Docker Compose Up 给出 "The system cannot find the file specified."错误

数组中的 Python 类对象

c# - 合并两个实现相同接口(interface)的类列表

python - Pandas 列表列,为每个列表元素创建一行

javascript - 创建变量引用的函数的新实例

javascript - 如何在jquery ui进度条中使用变量

javascript - 用于执行 Python 的测试套件?