这是我执行的以下代码,但我想要的答案应该是[1,4,6,7],但输出是[False,True,True,False,False,True,False]。。。请指导我如何获得所需的输出。
a_list = ["a", 1, 4, 6, "b", "d", 7, "o"]
result_list = [(type(x) == int) for x in a_list]
print(result_list)
[(type(x) == int) for x in a_list]
的意思是:用(type(x) == int)
的值(布尔值(填充列表,其中元素x
来自a_list
。因此,这个列表理解创建了一个布尔值列表。
您希望获得a_list
中满足某些条件的所有项。所以,使用这个:
[
x # get all items of `a_list`...
for x in a_list
if isinstance(x, int) # ...that satisfy this
]
以下是为什么应该使用isinstance(x, int)
而不是type(x) == int
:type((和isinstance((之间有什么区别?。
您做得很好,print(result_list(之所以返回布尔值,是因为它返回了类型(x(==int中的比较结果。
为了返回列表中的int值,您需要说对于x,其中x是a_list中的值,如果其类型为int,则将该值存储在新列表中。我将整数的结果列表命名为result_num_list。请参阅下面的代码片段:
a_list = ["a", 1, 4, 6, "b", "d", 7, "o"]
result_num_list = [x for x in a_list if type(x)==int]
print(result_num_list)
输出为[1,4,6,7]
要做到这一点有很长的路要走,也有很短的路:简称:
a_list = ["a", 1, 4, 6, "b", "d", 7, "o"]
result_list = [x for x in a_list if (type(x) == int)]
print(result_list)
长(但更容易阅读(:
a_list = ["a", 1, 4, 6, "b", "d", 7, "o"]
result_list = []
for i in a_list:
if type(i) == int:
result_list.append(i)
print(result_list)