如何在Python中检查int?

时间:2018-03-10 05:57:50

标签: python arrays integer

在问题中,我们要求从数组中删除所有偶数,因此我尝试创建一个函数:

import numpy as np 
A = np.array([2,3,4,5])

def remove_even(A):
    if ((A[0])/2) != int: #check if the first value is an integer when divided by 2
        A = A[0:len(A)+1: 2]
        return A
    else:
        A = A[1:len(A)+1:2]

但是,无论我的数组以偶数(即2)还是奇数(即1)开头,代码的执行只会到if语句而不是else语句。 {1}}。

我错过了什么?我将不胜感激任何反馈!

3 个答案:

答案 0 :(得分:2)

在numpy中你可以使用一个布尔掩码:

A[(A % 2).astype(bool)]

返回

array([3, 5])

答案 1 :(得分:0)

如果您需要没有numpy解决方案,您可以执行以下操作。

l = [1,2,3,4,5,6,7,8]
a = [i for i in l if not i%2]

##print(a) output
##[2, 4, 6, 8]

答案 2 :(得分:0)

您的代码永远不会到达else子句,因为if测试始终为true。

  1. 没有数字等于int,因为int是一个类。 !=是一个平等测试而不是成员资格测试。
  2. 4/2不属于int类型,因为/运算符会产生float结果,因此答案为2.0。这意味着无论type(A[0]/2)的值如何,float始终为A[0]。因此,测试int成员资格的分部结果,即使做得不好,也不会做你想做的事。
  3. 请改为:

    if not (A[0] % 2):
    

    如果A[0]不是偶数,无论是整数还是浮点数,都是如此。