gpt4 book ai didi

python - 在列表理解中重复调用方法

转载 作者:行者123 更新时间:2023-11-28 18:43:27 24 4
gpt4 key购买 nike

让我们考虑一个名为“my_list”的列表,其内容如下:

['10', '100', '1,000', '10,000', 100,000']

我想验证 my_list 是一个字符串化整数列表,它们是 10 的倍数并且按升序排序,所以这就是我要做的

int_list = [int(each_int.replace(',', '')) for each_int in my_list]

boolean = all([int_list[idx] == int_list[idx-1]*10 for idx in xrange(1, len(int_list))])

我的问题是每次迭代都会调用 len() 吗?在这种情况下更好的做法是什么?

  1. 将长度分配给一个变量并在列表理解中使用它而不是 len() 本身
  2. 没关系,len() 在所有迭代中只执行一次

如果 2. ,它是否适用于我正在遍历列表字典(或者可能只是字典)的值/键的情况

例如:d_list = [set(value) for value in my_dict.values()]

最佳答案

你可以这样做:

my_list = ['10', '100', '1,000', '10,000', '100,000']

int_list = [int(each_int.replace(',', '')) for each_int in my_list]

>>> print all(i*10==j for i,j in zip(int_list, int_list[1:]))
True

这将避免任何不必要的重复计算,而且速度更快,因为它是按除法进行比较。我还将 all([...]) 替换为 all(...) 因为 all 可以处理生成器并且可以节省创建一个临时列表。

关于python - 在列表理解中重复调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23418697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com