Ans*_*shu 2 python exception typechecking
我试图在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
Run Code Online (Sandbox Code Playgroud)
numbers = [1, "two", 3, 4, 5]
if any(isinstance(x, str) for x in numbers):
raise TypeError
else:
#do something
Run Code Online (Sandbox Code Playgroud)
除了代码较少这一事实外,该解决方案实际上比您当前的解决方案更有效.这是因为,它不会构建不必要的列表,而是懒惰地计算结果,并且只检查所需数量的项目.
此外,如果您使用的是Python 2.x,那么测试实例basestring而不是仅仅是更好str.这将允许您还捕获unicode列表中的任何字符串.