在python中,测试变量是否包含列表或元组的最佳方法是什么?(即一个集合)
http://www.canonical.org/~kragen/isinstance/:isinstance()
真的像这里所说的那么邪恶吗?
更新:我想要区分列表和字符串的最常见原因是,当我有一些无限深的嵌套树/字符串列表的数据结构时,我正在使用递归算法进行探索,并且我需要知道我何时命中了“叶子”节点。
发布于 2011-11-23 09:25:18
if type(x) is list:
print 'a list'
elif type(x) is tuple:
print 'a tuple'
else:
print 'neither a tuple or a list'
发布于 2010-02-02 23:19:28
只要不是多余的,使用isinstance
就没有错。如果一个变量应该只是一个列表/元组,那么记录该接口,并按此方式使用它。否则,检查是完全合理的:
if isinstance(a, collections.Iterable):
# use as a container
else:
# not a container!
这种类型的检查确实有一些很好的用例,比如使用标准字符串startswith / endswith方法(尽管准确地说,这些方法是用CPython中的C实现的,使用显式检查来查看它是否是一个元组-有不止一种方法可以解决这个问题,正如您所链接的文章中提到的那样)。
显式检查通常比尝试使用对象作为容器并处理异常更好-这可能会导致代码部分运行或不必要地运行时出现各种问题。
发布于 2010-02-02 23:03:25
将参数记录为需要是序列的参数,并将其用作序列。不要检查类型。
https://stackoverflow.com/questions/2184955
复制相似问题