我想找到一种方法来减少for循环的使用。我试图查看itertools文档,但找不到任何相关的文档。我目前使用至少4-5次for循环,这将使它循环到oooooodeeep和太耗时时,有大的数据集。你知道吗
有没有办法减少for循环的使用?我的主要目标是学习如何减少for循环的使用,而不是输出。你知道吗
这是我的密码:
aa = [[[] for i in range(10)] for i in range(10)]
diction = {"m":"something", "k":"something", "a":"something"}
a = [["m", "baba", "black", "no", "sheep"], ["k", "kong", "came", "out"]]
for opt in diction.keys():
for i, ix in enumerate(a):
for ii, iix in enumerate(ix):
for iixx in iix:
print(iixx)
if opt == iixx:
aa[i][ii].append(
[iixx])
提问目的:
如果可能的话,从循环的4-5倍减少到1-2倍或1-3倍。你知道吗
代替最里面的循环,您可以检查
opt in iix
,这稍微干净一些。你知道吗你也可以在列表理解中完成整个过程,这会更快:
aa = [[[opt for opt in diction if opt in iix] for iix in ix] for ix in a]
。你知道吗然而,这些都不会最终导致问题的渐进加速;这种复杂性最终取决于您要做的事情。如果您需要检查一组项目的每个组合,那么无论您做什么,这都需要组合时间。你知道吗
编辑:如果单词包含给定键的多个实例,则独占检查包含将给出不同的答案
您可以使用索引dict来跟踪每个字符的两个索引,然后使用set intersection来查找匹配的字符。关键是利用dict的
O(1)
平均查找时间和set交集的线性平均查找时间:相关问题 更多 >
编程相关推荐