【发布时间】:2015-10-03 11:12:18
【问题描述】:
假设我有一个这样的字符串列表:
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
对于我的实际列表l,我可以这样做:
if all(isinstance(el, basestring) for sl in l for el in sl):
#do something
是这样做的方法还是有更快的解决方案,因为这需要一些时间来处理大量列表?
【问题讨论】:
-
你怎么可能打败
O(m*n)?您需要检查列表中每个列表中的每个元素!all已经为您提供了捷径(即它发现 isn't 字符串的第一个元素将结束循环)。 -
对于大型列表
chain.from_iterable(l)可能会快一点,但复杂性不会改变 -
@PadraicCunningham:感谢您的建议。我猜你想到的解决方案看起来像 danihp 发布的那个?!
-
对不起@PadraicCunningham,我在发布答案后看到了你的评论!
-
@jonrsharpe:我经常这样想,然后找到了一个更有效的解决方案。 :)
标签: python string performance list