我正在尝试提高一个函数的性能,该函数计算 Python 中二维数组的一列中某个元素的出现次数。时间来自 cProfile,它也告诉我count()
每 357595 次调用仅花费 ~.08 秒。
for 循环最快(357595 次调用为 0.375 秒):
def count_column(grid, j, element):
count = 0
for x in range(0, len(grid)):
if grid[x][j] == element:
count += 1
return count
列表推导的速度可以忽略不计(357595 次调用为 0.400 秒):
def count_column(grid, j, element):
return [x[j] for x in grid].count(element)
Zip 是最慢的,幅度很大(357595 次调用为 0.741 秒):
def validate_column(grid, j, element):
return zip(*grid)[j].count(element)
有没有更快的方法来做到这一点,或者最好的方法是用 扁平化数组chain.from_iterable
?