我试过做一些训练代码,代码是分离数据类型的。
我列了一张单子,上面填了一些数字、字母和浮点数
我想要整数在lstInt
中,浮点数在lstflt
中,字符串在lstsrt
>>> lst=[1,'a',2,'b',3,'c',4.5,9.9]
>>> lstInt=[]
>>> lstflt=[]
>>> lststr=[]
>>> x=0
>>> for item in lst:
... if isinstance(i, int):
... lstInt.append(i)
... lst.pop(x)
... if isinstance(i, str):
... lststr.append(i)
... lst.pop(x)
... if isinstance(i, float):
... lstflt.append(i)
... lst.pop(x)
... x=x+1
...
1
2
3
4.5
>>> lst
['a', 'b', 'c', 9.9]
>>> lstInt
[]
>>> lstflt
[]
>>> lststr
[]
>>>
例如在
i
不存在。我想你是想用item
另外,通过使用
pop(x)
,您将通过索引从列表中删除项目,这意味着如果列表变小,则删除项目后的所有项目的索引都会减少,因为要填充的项目的位置较少。因此,尽管在原始列表中[1,'a',2,'b',3,'c',4.5,9.9]
'b'
在索引3中,如果删除1 and 'a'
,那么列表现在将是[2,'b',3,'c',4.5,9.9]
,'b'
在索引1中,而变量x仍将尝试从索引3中删除'b'
,因此pop(3)
不再删除'b'
,而是删除'c'
另外,如果你写的是长程序,我不建议你使用python解释器(你可以输入命令,它会自动编译并给出答案,每一行都以
>>>
开头(欢迎编辑一个更好的解释)我建议要么编写脚本,然后执行它们(在某个时候),要么现在使用在线编译器https://www.onlinegdb.com/online_python_compiler
我认为第一个错误是错误使用for循环变量。 您已经将“item”定义为for循环变量,但在isinstance和append中使用的是“i”
另外,当你从列表中弹出元素时,你正在改变位置,什么会干扰循环。for循环从元素0(第一个元素)开始,在您的代码中是数字“1”,当程序结束第一次迭代时,它现在将使用元素1(第二个元素),但是当它弹出第一个元素时,第一个元素是字母“a”,第二个是数字“2”,什么会使程序每次迭代都忽略一个元素
我认为你想要的代码是这样的:
相关问题 更多 >
编程相关推荐