首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >测试变量是列表还是元组

测试变量是列表还是元组
EN

Stack Overflow用户
提问于 2010-02-02 23:00:24
回答 12查看 358.5K关注 0票数 273

在python中,测试变量是否包含列表或元组的最佳方法是什么?(即一个集合)

http://www.canonical.org/~kragen/isinstance/isinstance()真的像这里所说的那么邪恶吗?

更新:我想要区分列表和字符串的最常见原因是,当我有一些无限深的嵌套树/字符串列表的数据结构时,我正在使用递归算法进行探索,并且我需要知道我何时命中了“叶子”节点。

EN

回答 12

Stack Overflow用户

发布于 2011-11-23 09:25:18

代码语言:javascript
复制
if type(x) is list:
    print 'a list'
elif type(x) is tuple:
    print 'a tuple'
else:
    print 'neither a tuple or a list'
票数 621
EN

Stack Overflow用户

发布于 2010-02-02 23:19:28

只要不是多余的,使用isinstance就没有错。如果一个变量应该只是一个列表/元组,那么记录该接口,并按此方式使用它。否则,检查是完全合理的:

代码语言:javascript
复制
if isinstance(a, collections.Iterable):
    # use as a container
else:
    # not a container!

这种类型的检查确实有一些很好的用例,比如使用标准字符串startswith / endswith方法(尽管准确地说,这些方法是用CPython中的C实现的,使用显式检查来查看它是否是一个元组-有不止一种方法可以解决这个问题,正如您所链接的文章中提到的那样)。

显式检查通常比尝试使用对象作为容器并处理异常更好-这可能会导致代码部分运行或不必要地运行时出现各种问题。

票数 41
EN

Stack Overflow用户

发布于 2010-02-02 23:03:25

将参数记录为需要是序列的参数,并将其用作序列。不要检查类型。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2184955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档