我试图做一个简单的冒泡排序代码来熟悉list/string manip &方法的使用,但由于某种原因,当我尝试迭代列表中的每个值用于删除空白和非整数值,但会跳过一些值。我还没有算到了冒泡排序部分..我找不到这个冒泡排序代码中的逻辑错误
#test data: 45,5j, f,e,s , , , 45,q,
if __name__ == "__main__":
getList = input("Enter numbers separated by commas:\n").strip()
listOfBubbles = getList.split(',')
print (listOfBubbles)
i = 0
for k in listOfBubbles:
listOfBubbles[i] = k.strip()
print ("i = {0} -- Checking '{1}'".format(i,listOfBubbles[i]))
if listOfBubbles[i] == '' or listOfBubbles[i] == ' ':
del listOfBubbles[i]
i -= 1
else:
try:
listOfBubbles[i] = int(listOfBubbles[i])
except ValueError as ex:
#print ("{0}\nCan only use real numbers, deleting '{1}'".format(ex, listOfBubbles[i]))
print ("deleting '{0}', i -= 1".format(listOfBubbles[i]))
del listOfBubbles[i]
i -= 1
else:
print ("{0} is okay!".format(listOfBubbles[i]))
i += 1
print(repr(listOfBubbles))
输出:
Enter numbers separated by commas:
45,5j, f,e,s , , , 45,q,
['45', '5j', ' f', 'e', 's ', ' ', ' ', ' 45', 'q', '']
i = 0 -- Checking '45'
45 is okay!
i = 1 -- Checking '5j'
deleting '5j', i -= 1
i = 1 -- Checking 'e'
deleting 'e', i -= 1
i = 1 -- Checking ''
i = 1 -- Checking '45'
45 is okay!
i = 2 -- Checking 'q'
deleting 'q', i -= 1
[45, 45, ' ', ' 45', 'q', '']
嗯,这不会为我编译。使用lambda函数的行会出现语法错误。另外,我不明白:x和x!='',第一个参数做什么(在'和'之前)?除此之外,你为什么使用pass而不是继续?还有一个问题,当“过滤”列表通过过滤器到“已过滤”列表时,“已删除”列表是否会从内存中删除? – Justen 2009-05-25 04:13:35