リストを作成する際に問題が発生しています 基数ソート用のロジック部分が完成しました。ここ は、コードは次のとおりです。基数ソートのヘルプが必要
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 ]
を与えます
for x in xrange(0,len(a)) :
a1[x].append(a[x]%10)
print a1
print '\n'
a1 = [[4], [5], [7], [3], [6], [2], [5], [2]]
を次のように、これは各数字 の終了桁を保存します
次の部分では、バケット番号がnoの末尾の数字と一致する場合、 です。その桁の数字がその桁に格納されます。
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]
次のように出力は次のようになります。
[]
[]
[22, 82]
[3]
[4]
[15, 45]
[6]
[7]
この部分はノーをピックアップします。バケット番号から始まるバケットから。バケツ番号にはゼロ。 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()
39行目の内容はありますか? – Benjamin
行39:len(b [k] [t])== 0: –