Как проверить последние три элемента из списка питона - являются ли они целым числом?

Я использую Пайтона, версию 2.7.2.

У меня есть задача проверить, являются ли последние три элемента из списка целым числом? Например:

mylist = [String, Large_string_containing_integers_inside_it, 80, 40, 50]

Поскольку выше списка я хочу проверить, являются ли последние три элемента целым числом или нет. Как я могу сделать это?

Вот код, который я проверяю:

#!/usr/bin/python

line = ['MKS_TEST', 'Build', 'stability:', '1', 'out', 'of', 'the', 'last', '2', 'builds', 'failed.', '80', '40', '50']

if all(isinstance(i, int) for i in line[-3:]):
    job_name = line[0]
    warn = line[-3]
    crit = line[-2]
    score = line[-1]
    if score < crit:
        print ("CRITICAL - Health Score is %d" % score)
    elif (score >= crit) and (score <= warn):
        print ("WARNING - Health Score is %d" % score)
    else:
        print ("OK - Health Score is %d" % score)
1
nl ja de
Последние три элемента - not' t целые числа, they' последовательности ре. , если блок никогда не будет выполнять.
добавлено автор Volatility, источник
Я отредактировал свой ответ, чтобы допускать это.
добавлено автор Volatility, источник
actully список линия является продукцией другого сценария. Другой сценарий просто печатает этот , MKS_TEST Строят стабильность: 1 из последних 2 строит подведенный. 80 40 50 на пульте. Согласно этой продукции я делаю кодовое тестирование, показанное в вопросе
добавлено автор user2010736, источник

1 ответы

Используйте построенный в isinstance и все функции, наряду с разрезанием списка.

if all(isinstance(i, int) for i in mylist[-3:]):
    # do something
else:
    # do something else
  • all checks if all elements in the given iterable evaluate to True.
  • isinstance checks if the given object is an instance of the second parameter
  • mylist[-3:] returns the last three elements of mylist

Кроме того, если вы используете Пайтона 2 и имеете очень большие количества в вашем списке, проверьте на долго (длинное целое) тип также.

if all(isinstance(i, (int, long)) for i in mylist[-3:]):
    pass

Это предотвращает числа как 10 ** 100 от ломки условия.

Если, однако, ваши последние три элемента - последовательности, у вас есть два варианта.

Если вы знаете, что ни одно из чисел не является чрезвычайно большим, можно использовать isdigit метод последовательности.

if all(i.isdigit() for i in mylist[-3:]):
    pass

Однако, если они могут быть очень большими (вокруг или по 2 ** 31 ), используйте попытку/кроме блок и построенный в карта функция.

try:
    mylist[-3:] = map(int, mylist[-3:])
    # do stuff
except ValueError:
    pass
  • try defines the block of code to execute
  • except Exception catches the given exception and handles it without raising an error (unless told to do so)
  • map applies a function to each element of an iterable and returns the result.
7
добавлено
Должен быть isinstance (я, (интервал, долго))
добавлено автор Flash, источник
пропавшие без вести интервал в isisntance требование
добавлено автор root, источник
@root Да, забыл вставлять это
добавлено автор Volatility, источник
@user2010736, пожалуйста, don' t отправляют большие блоки кода в комментариях, редактируют ваш вопрос вместо этого. It' s нечитабельный в it' s текущее состояние.
добавлено автор Volatility, источник
интервал и жаждет 2.x, isinstance (я, (интервал, долго))
добавлено автор Teudimundo, источник
'#!/usr/bin/python линия = [' MKS_TEST' ' Build' ' stability:' ' 1' ' out' ' of' ' the' ' last' ' 2' ' builds' ' подведенный ' ' 80' ' 40' ' 50'], если все (isinstance (я, интервал), поскольку я в линии [-3:]): job_name = линия [0] предупредите = линия [-3] критика = линия [-2] выиграйте = линия [-1] если счет <критика: печать ("ОЧЕНЬ ВАЖНЫЙ - медицинский Счет - %d" счет %), elif (счет> = критика) и (счет <= предупреждают): печать ("ПРЕДУПРЕЖДЕНИЕ - медицинский Счет - %d" счет %), еще: печать ("хорошо - медицинский Счет - %d" счет %), 'Спасибо!! Я использую выше кода. Ничто не печатается на пульте.
добавлено автор user2010736, источник
Комментарий я просто добавил doesn' t, кажется, понятны. Я добавлю его к ответу.
добавлено автор user2010736, источник
отредактированный вопрос с кодом, который я проверяю
добавлено автор user2010736, источник
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community