【发布时间】:2020-05-23 18:02:13
【问题描述】:
我希望能够进行迭代检查列表的值的条件,该列表将只有数字作为条目。如果它通过了条件测试,那么我想将它添加到一个新列表中。不幸的是,由于并非所有值都将添加到同一个列表中,因此我认为我无法进行列表理解。
我希望能够做到这一点:
def sort(values: []):
sum_0 = sum(values)
len_0 = len(values)
average_0 = sum_0 / len_0
lesser_list_0 = []
greater_list_0 = []
for value in values:
if value >= average_0:
greater_list_0.append(value)
else:
lesser_list_0.append(value)
但是没有被 for 循环减慢的烦恼。另外,有没有比使用 append 方法更快的方法将值添加到任一列表的末尾?
【问题讨论】:
-
您好,您能分享一些示例输入和预期输出吗?然后,我们可以使用它并使用
timeit监控性能。 -
我知道列表推导比执行常规 for 循环更快,但因为并非所有值都进入同一个列表,(除非所有值都相同)我不能做一个列表理解。所以我想知道是否有另一种方法可以更快地执行 for 循环。
-
之后您打算如何使用
greater_list和lesser_list?即你会访问元素还是只迭代它们?视情况而定,您可以选择发电机。另外,这里是 numpy 的选择吗?如果是这样,您可能想查看numpy.partition。 -
我需要访问原始列表的值,因为我需要比较值。
标签: python performance loops