我有一个由字符串和整数组成的列表.我必须只弹出整数并将其放在一个单独的列表中.我的代码:
list1=['a','b','c','d','e','f','g','h',1,2,3]
list=[]
x=0
for i in list1:
if isinstance(i,int) :
list.append(i)
list1.pop(x)
x += 1
print(list1)
print(list)
Run Code Online (Sandbox Code Playgroud)
输出上述代码
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 2]
[1, 3]
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么我的代码没有删除所有整数?我的代码出了什么问题?
您可以同时迭代和操作相同的列表:
for i in list1: # iteration
if isinstance(i,int):
list.append(i)
list1.pop(x) # manipulate
x += 1Run Code Online (Sandbox Code Playgroud)
这通常不起作用:for循环使用游标.如果您同时删除一个项目,那么您将开始跳过元素.
最好简单地使用声明式和Pythonic方法,例如以下内容:
list_int = [i for i in list1 if isinstance(i,int)]
list1 = [i for i in list1 if not isinstance(i,int)]
Run Code Online (Sandbox Code Playgroud)
此外,您不应该命名变量list,因为那时您删除了对list类的引用.
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |