如何在Python中使用type()检查元素是否为整数?

如何在Python中使用type()检查元素是否为整数?,python,Python,就像标题一样,但在删除非整数元素时,如何检查某个元素是否为整数并将列表中的元素平方 例如,列表是[0,2,'Python','C++',3] 这就是我所尝试的: def main(): lst = [0, 2, 'Python', 'C++', 3] print("Given list: ", lst) newLst = [item**2 for item in lst if type(lst[item]) == int] print("The list wh

就像标题一样,但在删除非整数元素时,如何检查某个元素是否为整数并将列表中的元素平方

例如,列表是
[0,2,'Python','C++',3]

这就是我所尝试的:

def main():
    lst = [0, 2, 'Python', 'C++', 3]

    print("Given list: ", lst)
    newLst = [item**2 for item in lst if type(lst[item]) == int]

    print("The list which only contains square of integers: ", newLst)

main()
错误发生时

TypeError: list indices must be integers or slices, not str

我遗漏了什么?

代码中的问题是,您正在使用元素
对列表进行切片,但索引必须是整数。因此,你应该改变

newLst = [item**2 for item in lst if type(lst[item]) == int]


或者,您可以使用以测试元素是否为类型
int

lst = [0, 2, 'Python', 'C++', 3]
lst_num = [ x**2 for x in lst if isinstance(x, int)]
输出将是:

print(lst_num)
[0, 4, 9]

是列表元素,而不是其索引。您应该使用
type(item)
,而不是
type(lst[item])

最好使用
isinstance()
,因为它与子类一起工作

newLst = [item**2 for item in lst if isinstance(item, int)]

您可以使用
isinstance(item,int)
在Python中执行类型检查的标准方法是
isinstance(val,int)
而不是
type(val)==int
,正如在前一篇文章中回答的那样
isinstance
而不是
type
如果isinstance(item,int)
我遗漏了什么?查看错误消息,并查看您试图进行的比较;)请提供完整的错误输出。另一方面,变量和函数名通常应遵循带有下划线的
小写形式。Up投票支持解释OP犯错误的原因,以帮助他们学习,也支持合并DeepSpace的注释。哇。我现在觉得自己很笨。谢谢你的回答!我真的是Python新手,所以我知道的不多,但我会继续努力变得更好!
newLst = [item**2 for item in lst if type(item) == int]
newLst = [item**2 for item in lst if isinstance(item, int)]