Python max()arg是一个空序列
我已经用Python编写了一个基数排序程序。但是当我执行代码时,我得到以下错误消息Python max()arg是一个空序列,python,Python,我已经用Python编写了一个基数排序程序。但是当我执行代码时,我得到以下错误消息max()arg是一个空序列。 这是我的密码: class RadixSort: num=0 array=[] def getData(self): print 'Enter the number of elements you want to enter: ' num=int(input()) print 'Now enter the el
max()arg是一个空序列
。
这是我的密码:
class RadixSort:
num=0
array=[]
def getData(self):
print 'Enter the number of elements you want to enter: '
num=int(input())
print 'Now enter the elements: '
for i in range(0,self.num):
print 'Element ',i+1,': '
value=int(input())
self.array.append(value)
def radixSort(self):
bin=[[],[],[],[],[],[],[],[],[],[]]
r=1
m=max(self.array)
while m>r:
for ele in self.array:
bin[(ele/r)%10].append(ele)
r=r*10
self.array=[]
for i in range(10):
self.array.extend(bin[i])
bin[i]=[]
def displayArray(self):
print ''
for ele in self.array:
print ele
RObject=RadixSort()
RObject.getData()
RObject.radixSort()
RObject.displayArray()
我在数组中输入值之前遇到此错误。我如何解决这个问题?我认为您应该更换:
num = int(input())
到
检查数组是否为空并非多余:
m = max(self.array) if self.array else 0
您应该显示完整的回溯。当我运行您的代码时,我得到以下信息:
Enter the number of elements you want to enter:
3
Now enter the elements:
Traceback (most recent call last):
File "radix.py", line 35, in <module>
RObject.radixSort()
File "radix.py", line 17, in radixSort
m=max(self.array)
ValueError: max() arg is an empty sequence
输入要输入的元素数:
3.
现在输入元素:
回溯(最近一次呼叫最后一次):
文件“radix.py”,第35行,在
RObject.radixSort()
radixSort中第17行的文件“radix.py”
m=最大值(自数组)
ValueError:max()arg是一个空序列
因此m=max(self.array)失败,因为无法对不存在的对象执行max函数。您需要有一个init方法来创建self.array
为什么使用输入而不是原始输入?您正在使用Python2.7一个旁注:在radixSort()中访问
self.array
应该会给您一个Attribute'Error
-您必须将array=[]
转换为self.array=[]
@j4ck:array=[]
是有效的,但array
将是类属性,而不是实例的属性。或者,如果您更喜欢EAFP:使用尝试
和除了
来处理空序列。它可能会稍微提高性能;简而言之,如果您担心经常出现空序列,请使用if
;否则请使用试试。是的,我有python 2.xx
Enter the number of elements you want to enter:
3
Now enter the elements:
Traceback (most recent call last):
File "radix.py", line 35, in <module>
RObject.radixSort()
File "radix.py", line 17, in radixSort
m=max(self.array)
ValueError: max() arg is an empty sequence