我有这样的示例列表:
example_list = [['aaa'], ['fff', 'gg'], ['ff'], ['', 'gg']]
现在,我检查它是否具有空字符串,如下所示:
has_empty = False;
for list1 in example_list:
for val1 in list1:
if val1 == '':
has_empty = True
print(has_empty)
这可以正常工作,因为它可以打印True,但是是否需要更多的pythonik方法?
您可以使用itertools.chain.from_iterable
:
>>> from itertools import chain
>>> example_list = [['aaa'], ['fff', 'gg'], ['ff'], ['', 'gg']]
>>> '' in chain.from_iterable(example_list)
True
万一如果内部列表更大(超过100个项目),则any
与生成器一起使用的速度将比上面的示例更快,因为这样,使用Python
for循环的速度代价将由快速in
操作来补偿:
>>> any('' in x for x in example_list)
True
时序比较:
>>> example_list = [['aaa']*1000, ['fff', 'gg']*1000, ['gg']*1000]*10000 + [['']*1000]
>>> %timeit '' in chain.from_iterable(example_list)
1 loops, best of 3: 706 ms per loop
>>> %timeit any('' in x for x in example_list)
1 loops, best of 3: 417 ms per loop
# With smaller inner lists for-loop makes `any()` version little slow
>>> example_list = [['aaa'], ['fff', 'gg'], ['gg', 'kk']]*10000 + [['']]
>>> %timeit '' in chain.from_iterable(example_list)
100 loops, best of 3: 2 ms per loop
>>> %timeit any('' in x for x in example_list)
100 loops, best of 3: 2.65 ms per loop
问题内容: 知道列表中是否存在值(列表中包含数百万个值)及其索引是什么的最快方法是什么? 我知道列表中的所有值都是唯一的,如本例所示。 我尝试的第一种方法是(在我的实际代码中为3.8秒): 我尝试的第二种方法是(速度提高2倍:我的真实代码为1.9秒): 堆栈溢出用户建议的方法(我的实际代码为2.74秒): 在我的真实代码中,第一种方法花费3.81秒,第二种方法花费1.88秒。这是一个很好的改进,但
问题内容: 查看URL存在并且响应不是404的最佳方法是什么? 问题答案: 您可以使用 手册中的示例2 : 第一个数组元素将包含HTTP响应状态代码。您必须解析它。 请注意,示例中的函数将发出HTTP HEAD请求,这意味着它将不会获取URL的正文。这比使用GET请求(也将返回正文)更有效。 还要注意,通过设置 默认 上下文,任何使用http流上下文的后续调用现在都将发出HEAD请求。因此,确保完
问题内容: 在简单的清单中,下面的检查很简单: 但如果是列表列表,例如: 为了退货该如何解决? 问题答案: 使用内置功能尝试此操作。这是最惯用的解决方案,并且效率很高,因为一旦找到第一个匹配项,就会短路并停止:
问题内容: 哪种方法可以更好地检查属性是否存在? Jarret Hardie提供了以下答案: 我看到它也可以通过以下方式完成: 一种方法通常比其他方法使用更多吗? 问题答案: 没有“最佳”方法, 因为您永远不会仅仅检查属性是否存在;它始终是某些较大程序的一部分。有几种正确的方法,一种值得注意的不正确的方法。 这是演示此技术失败的演示: 输出: 大多数情况下,您不想惹恼。这是用于执行特殊操作的特殊属
问题内容: 查找对象是否在数组中的最佳方法是什么? 这是我知道的最好方法: 问题答案: 从ECMAScript 2016开始,您可以使用 如果要支持IE或其他较旧的浏览器: 编辑:这将无法在IE6、7或8上运行。最好的解决方法是自行定义它(如果不存在): Mozilla)版本: { }; } Daniel James的版本: Array.prototype.indexOf = function (
问题内容: 可能是一个非常愚蠢的问题,检查elasticsearch中文档的字段是否存在的最佳方法是什么?我在文档中找不到任何内容。 例如,如果该文档没有字段/关键字“ price”,那么我不想返回结果。 {“ updated”:“ 2015/09/17 11:27:27”,“ name”:“ Eye Shadow”,“ format”:“ 1.5 g / 0.05 oz”,} 我可以做什么? 谢