检查Python列表中是否有元素为字符串类型
我想在一个混合类型的列表中,如果里面有字符串类型的元素,就抛出一个 TypeError
错误。我用下面的代码实现了这个功能,但我在想有没有更好的方法来达到同样的效果。
numbers = [1, "two", 3, 4, 5]
myStrList = [x for x in numbers if isinstance(x, str)]
if len(myStrList) != 0:
raise TypeError
else:
#do something
2 个回答
0
对字符串进行筛选也可以:
L=[0, 0, 1, 2, 'a', 3, 0, 0, 'l']
if filter(lambda item: isinstance(item, str), L) != []:
raise TypeError
else:
#do something
如果筛选后的列表是空的,说明原来的列表里没有字符串。
7
numbers = [1, "two", 3, 4, 5]
if any(isinstance(x, str) for x in numbers):
raise TypeError
else:
#do something
除了代码更少之外,这种方法实际上比你现在的方案要高效得多。因为它不会创建一个不必要的列表,而是会懒惰地计算结果,只检查必要的项。
另外,如果你在使用Python 2.x版本,最好测试一下是否是basestring
,而不仅仅是str
。这样可以捕捉到列表中的任何unicode
字符串。