在列表中存储模数

时间:2014-04-29 22:53:40

标签: python hash

我有一个存储哈希值的列表。现在我想对每个元素进行模运算, 像hash [i]%4和另一个list中的存储值。我正在使用while循环进行此操作,但由于列表很长,所需的编译时间很长。是否还有其他pythonic方法来加速进程。使用的代码,x =列表长度,哈希:列表存储哈希值,list5是一个新列表。

    while t in range(0,x):
       list5[t]=hashes[t]%4
       t=t+1

提前致谢

2 个答案:

答案 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]