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

2024-04-23 20:04:18 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我想验证一下我的_列表是一个字符串化整数的列表,它是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()]


Tags: 字符串in内容列表forlen字典value
1条回答
网友
1楼 · 发布于 2024-04-23 20:04:18

你可以这样做:

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可以处理生成器,并且可以省去创建临时列表的开销。在

相关问题 更多 >