在Python中计算排序和列表理解

尼科达姆

我在了解如何解决代码中的错误时遇到问题。它来了:

def counting_sort(some_list, max=100000):
    licznik = [0] * (max+1) 
    for x in some_list:
        licznik[x] = licznik[x]+1
    i=0
    for x in range(max+1):
        for y in range(licznik[x]):
            some_list[i]=x 
            i=i+1 
    return some_list.reverse()

def gen(number, b=100000):
    some_list = []
    return [some_list.append(random.randint(0, b)) for x in xrange(number)]

domain = [10000, 25000, 50000, 100000, 200000, 300000, 400000, 500000, 750000, 1000000]
for element in domain:
    print 'Results for: ' + str(element) + ' elements:'
    for j in range(0, 10):
        temp_list = gen(element)
        start = time.time()
        counting_sort(temp_list)
        end = time.time() - start
        print end

这是行的问题:

for x in some_list:
            licznik[x] = licznik[x]+1

我想应该通过列表理解来解决它,但是我不知道如何以这种方式进行转换。有帮助的建议吗?感谢前进。

塞尔丘克

您填写some_listNone您的函数值gen换线

return [some_list.append(random.randint(0, b)) for x in xrange(number)]

到:

return [(random.randint(0, b)) for x in xrange(number)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章