为什么功能不起作用?
def fun2(a,b):
a.sort(key = lambda item: ([str,int].index(type(item)), item))
print(a[b-1],a[b-2])
def filter(x,y):
list2=[]
q=200
while x!=200:
if y[x]%1 ==0 :
list2.append(y[x])
x=x+1
fun2(list2,q)
list1=[]
a=0
b=0
c=0.5
d=65
z=0
while a!=100:
list1.append(a)
a=a+1
while b!=50:
list1.append(c)
b=b+1
c=c+0.43
while d!=115:
list1.append(chr(d))
d=d+1
q=len(list1)
print(list1)
print(filter(z,list1))
为什么过滤器未调用函数2? 为什么我在这里犯了错误? 我想从list2打印2个最大的整数
答案 0 :(得分:0)
这里有无限循环:
while x != 200:
if y[x]%1 == 0 :
list2.append(y[x])
x = x + 1
y[x]
不是整数,则条件不是True,并且x
也不再递增。
您可能想做:
while x <= 200:
if y[x] == int(y[x]):
list2.append(y[x])
x += 1
更新:哦,我发现您的列表中还包含非数字项...
另外,您不应使用while
循环遍历列表。这是一个更好的方法
for item in y:
try:
if item == int(item):
list2.append(item)
except ValueError:
pass