python – 如何检查列表列表中的所有元素是否为字符串

假设我有一个字符串列表,如下所示:

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) ):
    ...
点赞