如何在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)]