我來與我的任務結束了,我不知道我來自哪裏,我現在去哪裏,代碼目前正在尋找這樣的:基數排序,「隊列」對象不是可迭代
def radixsorting1(n,m):
div=1
mod=10
bin_list=[]
alist=[]
r=[]
s=[]
for bins in range(0,10):
bin_list.append(Queue())
for k in range(0,m):
r.append(random.randint(1,10**n))
if not len(r)==0:
o=max(r)
y=len(str(o))
for p in range(y):
for num in r:
minsta_tal=num%mod
minsta_tal=int(minsta_tal//div)
bin_list[minsta_tal].put(num)
new_list=[]
for bins in bin_list:
while not bins.isempty():
new_list.append(bins.dequeue())
alist=new_list
return alist
我一直在試圖做的是創建10個隊列放在列表中,然後從1到10^n隨機m個數字。假設我得到了66和72,然後我首先用「小數」對它們進行排序,即我的數字是6和2,然後把它們放在一個丟失的位置,然後再重複這個過程,但是對於數字6和7(更大的數字)。在目前的形狀中,我得到錯誤「Queue」對象是不可迭代的。
我的隊列類看起來像這樣,我認爲這個沒問題。
class Queue:
def __init__(self):
self.lista=[]
def put(self,x):
self.lista.append(x)
def get(self):
if not len(self.lista)==0:
return self.lista.pop(0)
def isempty(self):
if len(self.lista)==0:
return True
else:
False
def length(self):
return len(self.lista)
def dequeue(self):
if not len(self.lista)==0:
n=self.lista.pop(0)
return n
是的,這不是[可迭代](http://stackoverflow.com/q/9884132/3001761);你沒有定義'__iter__'或'__getitem__'。另外,根據[數據模型](https://docs.python.org/3/reference/datamodel.html),你應該重命名現有的方法 – jonrsharpe
不能說我確定我做了什麼但我確實把 def __iter __(個體經營): \t \t迴歸自我 在我班上的功能,但現在我得到的錯誤:ITER()返回典型「排隊」的非迭代器,我認爲我的代碼的結局是錯誤的,以及... –
請[編輯]這個問題,代碼(尤其是Python)在評論中幾乎不可讀。 – jonrsharpe