Как я могу проверить числа с помощью операторов сравнения в каждом разделенном фрагменте? С помощью Python

#python #comparison #chunks

Вопрос:

У меня есть следующий вывод:

 [3, 3, 3], [4, 4, 4], [2, 4, 4], [4, 5, 1], [5, 5, 5], [2, 4, 3], [5, 5, 1], [4, 5, 4], [4, 5, 1], [2, 2, 2], [3, 3, 3], [5, 5, 5], [2, 2, 2], [3, 5, 3], [2, 2, 2], [1, 3, 1], [3, 3, 2], [2, 4, 4], [5, 5, 5], [3, 5, 3].
 

Как я могу протестировать с помощью python каждый фрагмент, используя следующую формулу:

  • Первое число куска меньше или равно третьему числу куска больше или равно второму числу куска?

    Так что я могу проверить, например, первый блок и, если третье число в пределах первого и второго (напр. число 5 3-й ряд и 1-й ряд является число 2 и 2-й ряд-это число 8. т. е. число 5 находится в диапазоне от 2 до 8.) Я могу распечатать True или False

Комментарии:

1. [i[2] in range(i[0], i[1] 1) for i in [your-input-of-lists-goes-here]]

2. @GhostOps, от которого у меня болят глаза….

3. я знаю, но в операции не упоминается, что это один массив или ввод, так что вот почему я это сделал, спасибо за это

4. О, это справедливо. Такие вещи вы тоже можете найти в коде, развернутом моим университетом 😉

5. @GhostOps — То True и False не нужно. i[2] in range(i[0], i[1] 1)) уже возвращает логические значения.

Ответ №1:

Сравнение более эффективно, чем использование in range(...)

 all([start <= num and num <= end for start, end, num in lst])
 

Тестирование производительности

Ввод:

 lst = [[i, i 1, i 1] for i in range(1000)]
 

С in range(...) :

Код:

 %timeit [l[-1] in range(l[0], l[1] 1) for l in lst]
print(all([l[-1] in range(l[0], l[1] 1) for l in lst]))
 

Выход:

 1.22 ms ± 161 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
True
 

С помощью сравнения

Код:

 %timeit [start <= num and num <= end for start, end, num in lst ]
print(all([start <= num and num <= end for start, end, num in lst ]))
 

Выход:

 258 µs ± 29.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
True
 

Ответ №2:

Воспользуйся range :

 lst = [3, 3, 3], [4, 4, 4], [2, 4, 4], [4, 5, 1], [5, 5, 5], [2, 4, 3], [5, 5, 1], [4, 5, 4], [4, 5, 1], [2, 2, 2], [3, 3, 3], [5, 5, 5], [2, 2, 2], [3, 5, 3], [2, 2, 2], [1, 3, 1], [3, 3, 2], [2, 4, 4], [5, 5, 5], [3, 5, 3]

>>> [l[-1] in range(l[0], l[1] 1) for l in lst]
[True, True, True, False, True, True, False, True, False, True, 
 True, True, True, True, True, True, False, True, True, True]
 

Или comparisons :

 >>> [l[0]<=l[1]<=l[-1] for l in lst]
[True, True, True, False, True, True, False, True, False, True,
 True, True, True, True, True, True, False, True, True, True]