我有一个存储哈希值的列表。现在我想对每个元素进行模运算, 像hash [i]%4和另一个list中的存储值。我正在使用while循环进行此操作,但由于列表很长,所需的编译时间很长。是否还有其他pythonic方法来加速进程。使用的代码,x =列表长度,哈希:列表存储哈希值,list5是一个新列表。
while t in range(0,x):
list5[t]=hashes[t]%4
t=t+1
提前致谢
答案 0 :(得分:2)
while t in range(0,x):
每次进行测试时都会创建一个新的范围对象。一个更常见的结构是
for t in range(0,x):
list5[t] = hashes[t] % 4
这只会创建一个范围对象,并自动沿着它移动t
。这样做的缺点是需要预先分配正确大小的列表。您可以附加到列表
list5 = []
for t in range(0,x):
list5[t].append(hashes[t] % 4)
然而,Pythonic方式是使用列表理解
list5 = [i % 4 for i in hashes]
答案 1 :(得分:1)
更加pythonic的方法可能看起来像
In [1]: x = [1, 3, 4, 5, 6]
In [2]: [item%4 for item in x]
Out[2]: [1, 3, 0, 1, 2]