2014-11-12 5 views
1

Если у меня есть список таких как:Как проверить, если все элементы в списке являются целыми числами

List = [12,6,3,5,1.2,5.5] 

Есть ли способ, я могу проверить, если все числа являются целыми числами? Я пробовал что-то вроде

def isWhole(d): 
if (d%1 == 0) : for z in List return true. 

Это, очевидно, ужасно неправильно. Что я могу сделать?

+0

Может быть связаны: [Как сравнить тип объекта в Python?] (http://stackoverflow.com/q/707674/2596334). –

+0

Что такое целое число (программно говоря)? Являются ли целые числа целыми числами? Тогда как насчет 'bool' (' True' и 'False'), который наследуется от' int'? Или целое число, что '1' делится на равные? Это сделало бы 'complex (1,0)' и 'fractionractions.Fraction (1,1)' целые числа. Это то, что вы хотите? –

+0

Голосование, чтобы закрыть как «Неясное, что вы просите», потому что определение «целое число» не указано. –

ответ

6

Итак, вы хотите, чтобы целые числа и поплавки были равны целым числам?

def is_whole(d): 
    """Whether or not d is a whole number.""" 
    return isinstance(d, int) or (isinstance(d, float) and d.is_integer()) 

При использовании:

>>> for test in (1, 1.0, 1.1, "1"): 
    print(repr(test), is_whole(test)) 


1 True # integer 
1.0 True # float equal to integer 
1.1 False # float not equal to integer 
'1' False # neither integer nor float 

Вы можете применить это к вашему списку с all и map:

if all(map(is_whole, List)): 

или generator expression:

if all(is_whole(d) for d in List): 
+0

Благодарим за это. Я думаю, что это правильное направление, мне нужно идти. Поэтому, используя «if all (map (is_whole, List)):« Как распечатать, если отдельные элементы выдаются как «Истина» или «Неверно»? – bob9123

+0

Swap 'if any (...):' for 'list (...)' или понимание списка, например. '[is_whole (d) для d в [12, 6, 3, 5, 1.2, 5.5]] == [True, True, True, True, False, False]'. – jonrsharpe

+1

'is_whole' оценивает' True' и 'False' как целые числа. Должно ли это? –

1

Простой Solut иона для списка L:

def isWhole(L): 
    for i in L: 
     if i%1 != 0: 
      return False 
    return True 
+0

'isWhole ([complex (1,0), fractions.Fraction (1,1), True, False])' оценивает значение 'True'. Должно ли это? –

0

Список = [12,6,3,5,1.2,5.5]

для я в списке:

if i%1 != 0 : 
    print(False) 
    break 
Смежные вопросы