假设我有一个字符串列表,如下所示:
l=[['a','kl_hg', 'FOO'],['b', 'kl_c', 'po']]
现在我想使用if命令如下(在伪代码中!):
if allElementsOf(l).isString():
#do something
从this question开始,我学会了如何检查单个变量是否为字符串.因此,对于单个列表,我可以这样做:
dummyL = ['a','kl_hg', 'FOO']
if all(isinstance(s, basestring) for s in dummyL):
#do something
而对于我的实际列表,我可以这样做:
if all(isinstance(el, basestring) for sl in l for el in sl):
#do something
这是做到这一点的方式还是有更快的解决方案,因为这需要一些时间用于大量列表?
最佳答案 你的方法是正确的,
any flatting list short cut seems slowest.A
fastest way may be use itertools:
import itertools
l=[['a','kl_hg', 'FOO'],['b', 'kl_c', 'po']]
if all( isinstance(x, basestring) for x in itertools.chain.from_iterable(l) ):
...