考虑一个名为'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()
会在每次迭代时被调用吗?在这种情况下,哪种方法更好?
- 将长度分配给一个变量,并在列表推导式中使用该变量而不是len()本身
- 没有关系,len()仅在所有迭代中执行一次
如果是2.,那么它适用于例如,当我遍历字典列表的值/键(或仅是字典)的情况吗?
例如:d_list = [set(value) for value in my_dict.values()]
len
仅在传递到xrange
时调用一次,之后推导式将迭代xrange
的结果。同样,使用my_dict.values()
时调用也仅发生一次。这与for
循环的情况类似:循环构造函数仅发生一次。 - Matthew Trevor