2016-08-16 2 views
0

목록을 만드는 데 문제가 있습니다. 기수 정렬을위한 논리 부분을 완료했습니다.기수에 대한 도움이 필요합니다.

import math 

a = [4, 15, 7, 3, 6, 22, 45, 82] 

a1 = [[] for _ in xrange(len(a))] 
a2 = [[] for _ in xrange(len(a))] 
a3 = [[] for _ in xrange(len(a))] 
a4 = [[] for _ in xrange(len(a))] 
b = [[] for _ in xrange(10)] 
b2 = [[] for _ in xrange(10)] 
d=len(str(max(a))) 



[str(item).zfill(d) for item in a] 

print a 

코드의이 부분은 모든 숫자의 길이가 더 구비 맥스 디지트의 상관

a = [ 04 , 15 , 07 , 03 , 06 , 22 , 45 , 82 ]주지 않는다과 동일한 수 있도록 숫자 전에 제로를 추가 할 것이다 : 여기 는 코드

a1 = [[4], [5], [7], [3], [6], [2], [5], [2]] 
다음과 같이

for x in xrange(0,len(a)) : 
    a1[x].append(a[x]%10) 
    print a1 

print '\n' 

이 각 번호의 마지막 자리를 저장합니다

다음 부분에서 bucket no가 no. 그 다음에 no. 해당 자릿수가 저장됩니다.

[] 
[] 
[22, 82] 
[3] 
[4] 
[15, 45] 
[6] 
[7] 

이 부분은 데리러 더합니다 다음 없기 때문에

i=0 
for x in xrange(0,len(a)) :  
    for u in range(0,len(a)) : 
    if a1[u]==[i] : 
     b[x].append(a[u]) 
    i=i+1 


for u in range(0,len(a)) : 
    print b[u] 

출력 될 것입니다. 양동이에서 시작하는 양동이에서. 버킷 번호는 0입니다. 10

for k in range(0,len(a)) :  
l=len(b[k]) 
for t in range(0,l) : 
    a2[k]=b[k][t] 
    print a2[k] 

A2는

22 
82 
3 
4 
15 
45 
6 
7 

입니다하지만 난 this-

print a2[0] 

처럼 인쇄 할 때 나는를 저장하지 않으

[] 

제공 해당 a2 목록의 빈 값 방법 그것을 피하시오?

"버킷이 비어 있으면 루프를 계속 수행하지 않아도됩니다"라는 조건을 사용해야한다는 것을 알고 있습니다. 이 코드를 작성하는 방법을 모르겠습니다.

나는 내가

if len(b[k][t])==0 : 
     continue 
else : 
    a2[k]=b[k][t] 
    print a2[k] 

를 추가 할 필요가 생각하지만

Traceback (most recent call last): 
    File "prog.py", line 39, in <module> 
TypeError: object of type 'int' has no len() 
+0

39 번 내용을 기재 할 수 있습니까? – Benjamin

+0

line 39 : len (b [k] [t]) == 0 : –

답변

0

b[?] 정수의 배열입니다 작동하지 않는, 그래서 b[k][t]는 정수가됩니다,하지만 당신은 취하려고하는 그 길이는 if len(b[k][t])==0:입니다.

a2의 빈 요소를 피하는 유일한 방법은 배열을 사용하지 않는 것입니다. 예를 들어, 사전.

+0

a2에 빈 값을 추가하지 않도록 코드를 작성하는 방법을 모르겠습니다.내가 그 부분에 도움이 필요해 –

+0

나는 아직도 그것을 얻지 못한다. –

+0

지금 나는 그것을 얻었다 (0, len (a)) k에 대해 'e = 0 를 얻었다 : l = len (b [k]) t 범위 (0, L) 중 : A2 [K] = B를 [K] [t] E = E + 1 인쇄 '의 A2의 = 없음 * 쓰고 필요 a2' 8' –

관련 문제