声明说:
写一个非递归(负)函数,给定一个整数列表(可能是无序的)函数返回带有负数的相同列表到正头和后(不管它们之间的顺序如何)。该算法可以在快速排序中以请求类似策略(虽然稍微简单一些)的形式解决。
我把这段代码:
def negatius(a):
fin = len(a) - 1
i = 0
b = [i]
for i in range(len(a)):
if a[i] < 0:
b[fin] = a[i]
i += 1
else:
b[fin] = a[i]
fin += 1
print "La llista és",b[fin]
a=[1,-2,3,-4,-3,5,6]
negatius(a)
并出现错误:本地变量&#39; i&#39;在分配之前引用。我不明白这个
答案 0 :(得分:1)
您正在从最高索引开始递增fin
,并使用它来访问具有此索引的列表中的元素。这是不对的,因为这些指数不存在。
b[fin] = a[i]
和
b[fin] = a[i]
fin += 1
和
print "La llista és",b[fin]
同样在if和else中你附加到列表中。那也是最有意义的。你应该追加一次并在其他情况下加前缀
def negatius(a):
fin = len(a) - 1
i = 0
b = [i]
for i in range(fin):
if a[i] < 0:
b = [a[i]] + b # prepend a to b
else:
b += [a[i]] # append a to b
print "La llista és",b
a=[1,-2,3,-4,-3,5,6]
negatius(a)
打印
La llista és [-3, -4, -2, 0, 1, 3, 5]
请注意您在列表中添加0,我怀疑这没问题。