让我们考虑一个名为'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()
吗?在这种情况下,更好的做法是什么?
if 2.,是否适用于说,我正在迭代列表字典的值/键(或者只是字典)
ex:d_list = [set(value) for value in my_dict.values()]
答案 0 :(得分:1)
你可以这样做:
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
可以处理生成器,并且不必创建临时列表。