【发布时间】:2015-10-06 14:37:12
【问题描述】:
我正在尝试通过将for 循环替换为列表推导、生成器和迭代器来改进我的编码和算法性能。
我很难琢磨如何实现itertools 中的工具,如果您能提供任何帮助,我将不胜感激。
我正在尝试为特定范围的索引初始化一个值为0 的列表。以下是我想出的两种方法:
count_list = [0 for index in range(4 ** k)]
和
total_index = list(range(4 ** k))
count_list = [0 for index in total_index]
(k表示由4个字母组成的单词中的数字字母的整数)
当我在 Python 3.4 中对代码进行计时时,结果发现第一个使用生成器的方法在单独查看时明显更快,但是当我不得不重用 @987654326 时@index 为另一个循环,这些方法最终以大致相同的速度计时。
我一直在努力弄清楚如何使用迭代器来复制此初始化。我知道如果我想创建索引中所有数字的列表,我可以使用 list(range()) 或者我可以使用
index_list = [index for index, values in enumerate(words)]
我只是不确定如何使用类似的方法将值 0 分配给每个元素。
我也想知道如何使用列表理解来摆脱这个for 循环。我猜我需要类似地图的东西,但我不确定如何实现。
for index in range(4 ** k):
if frequency_array[index] >= t:
clump[index] = 1
谢谢。
【问题讨论】:
标签: python python-3.x generator list-comprehension itertools