最佳的方法来检查一个变量是否为列表是什么?

44 浏览
0 Comments

最佳的方法来检查一个变量是否为列表是什么?

这个问题已经有答案了

type()和isinstance()有什么区别?

在Python中检查类型的规范方式是什么?

我发现了这三种检查方法,但我不知道哪一个更好:

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是否为字符串、元组、字典、整数、浮点数等吗?如果这是可能的,在前两种方法中我需要把列表转换为元组、字符串、字典、整数、浮点数等吗(不需要吗?),但在第三种方法中呢?我需要使用()、{}、\'\'以及什么来表示整数和浮点数?

admin 更改状态以发布 2023年5月20日
0
0 Comments

通常我们更喜欢使用isinstance(a, list),因为它允许a成为列表或列表子类。

为了更好的速度,一种精确的检查可以进行标识测试,即type(a) is list。这比使用==快一些。

话虽如此,Python中的规范是尽量避免类型检查,而是做“鸭子类型”。你在a上调用list方法,如果它们成功,那么我们认为a已足够像列表了。

0
0 Comments

这些表达方式都表示不同的事情,所以实际上这取决于你想要实现的确切目标: \n\n- isinstance(x, list) 检查x是否是list类型或者具有list作为其父类(为简单起见,我们忽略了ABC);\n- type(x) is list 检查x的类型是否恰好为list;\n- type(x) == list 检查类型的相等性,这与完全相同的类型是不同的,因为元类可以挑战性地覆盖__eq__。\n\n所以,它们依次表达以下内容: \n\n- isinstance(x, list): x是否像一个list;\n- type(x) is list:x是否精确是一个list而不是子类;\n- type(x) == list: x是否是一个list,或者其他使用元类魔法伪装成一个list的类型。

0