Сравнение чисел в диапазоне
Функция возвращает цвет пикселя в RGB формата [255, 255, 255]. На некоторых устройствах цвет почемуто разнится в диапазоне +1 -1. Пример:
ПервоеУстройство = getRGBcolor(20, 34) # Вернуло [107, 182, 148] ВтороеУстройство = getRGBcolor(20, 34) # Вернуло [107, 182, 149] if getRGBcolor(20,34) == [107, 182, 148]: Делаем действия..
Редактировать на каждом устройстве цвет под нужный идея бредовая. Поэтому решил написать функцию которая вернет нам True если цифры находятся в диапазоне.
def (colorInPos, checkColor): #getRGBcolor(20, 34), checkColor = [107, 182, 148] val1 = colorInPos[0] - checkColor[0] val2 = colorInPos[1] - checkColor[1] val3 = colorInPos[2] - checkColor[2] if val1
И я решил что могу эту задачу решить отнимая числа друг от друга. Но выглядит это так себе.. Может есть метод покрасивее/получше?
Как сравнить несколько переменных с одним и тем же числом?
мне нужно каждую сравнить их с числом 20
Хочется сделать как-то более компактно, чем сравнивать каждое число по отдельности.
Немного погуглил и нашел квадратные скобки, в которые можно засунуть все переменные. В итоге получилось так:
1 2 3 4 5
number = [a, b, c, d, e] if number > 20: print(true) else: print(false)
Но код не пашет. Подскажите, как можно сравнить все 5 переменных одновременно
Добавлено через 2 минуты
П.С.: сравнивать нужно переменные одновременно КАЖДУЮ, не складывая их между собой.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Массив заполняется одним и тем же числом
Почему массив не рандомится, а заполняется одним и тем же числом? #include <iostream> #include.
Двумерный массив заполняется одним и тем же числом
где ошибка? массив заполняется одним и тем же числом. #include "stdafx.h" #include.
Как изменить цену на несколько товаров с одним и тем же артикулом на последнюю введенную цену?
В 1с предприятие 8.3 управление торговлей 11.1 как изменить цену на несколько товаров с одним и тем.

Если числа не равны, то заменить каждое из них одним и тем же числом, равным большему из исходных
Даны два целых числа. Если числа не равны, то заменить каждое из них одним и тем же числом, равным.
103 / 81 / 54
Регистрация: 25.11.2016
Сообщений: 278

Сообщение было отмечено Newibe как решение
Решение
Во первых. необязательно постоянно писать вот так
1 2 3 4 5
a = int(input()) b = int(input()) c = int(input()) d = int(input()) e = int(input())
Можно сделать так
number = [int(i) for i in input().split()] '''Здесь через пробел вводите нужное количество цифр. Называется эта конструкция генератор списков'''
Касательно вашего вопроса
1 2 3 4 5 6
number = [int(i) for i in input().split()] for i in number: if i > 20: print('True') else: print('False')
Сообщение от Newibe 
Логический тип bool. Операторы сравнения и операторы and, or, not
Для этого достаточно записать такое сравнение и Python возвратит результат: либо True, либо False. В данном случае получаем True (истина), так как 4 действительно больше 2. Если же записать:
4 > 7
то получим False, так как 4 меньше 7. То же самое можно делать и с переменными:
a = 5 b = 7.8 a b
Мало того, полученный результат, при необходимости, можно сохранить в переменной, например, так:
res = a > b
получим значение False в переменной res.
Давайте теперь посмотрим на тип этой переменной:
type(res)
да, это новый тип bool (булевый тип), с которым мы только что познакомились и он может принимать только два значения: True или False.
Мы можем присвоить эти значения напрямую переменной, например, так:
res = False
Приведу несколько примеров их использования:
5 == 7-2
Здесь справа записана арифметическая операция. Так тоже можно делать. Вообще, в качестве операндов могут быть любые конструкции языка Python: переменные, вычисления, функции и т.п.
Следующий пример, сравнения:
8 >= 8 8 > 8
В первом случае получаем True, а во втором – False, так как 8 не больше 8. Также имейте в виду, что оператор >= записывать наоборот => нельзя. Помимо этого знаки:
всегда записываются без пробелов. Если поставить пробел, будет ошибка.
Также частой, нет, очень частой ошибкой начинающих программистов – это запись вместо оператора сравнения == оператора присваивания =. Сравните две строчки:
x = 6 x == 6
В первом случае мы присваиваем переменной x число 6, а во втором случае сравниваем переменную x со значением 6. И эти операторы путать нельзя, хотя они и похожи друг на друга.
Еще несколько полезных примеров сравнения. Предположим, мы хотим проверить переменную x на четность. Я напомню, что четные числа – это, например, числа:
то есть, числа, кратные 2. Как выполнить такую проверку? Обычно, это делают, следующим образом:
x % 2 == 0
Помните оператор вычисления остатка от деления? Он здесь будет возвращать 0, если двойка укладывается в x без остатка. Это и есть проверка на четность.
Обратную проверку на нечетность, можно записать так:
x % 2 != 0
По аналогии мы можем проверить, кратна ли переменная какому-либо значению, например, трем:
a % 3 == 0
и так можно делать проверки с любыми числами.
Операторы not, and, or и их приоритеты
Давайте теперь поставим более сложную задачу и определим, попадает ли число (значение переменной) в диапазон [-2; 5]? Какие логические умозаключения здесь нужно провести, чтобы ответить на этот вопрос? Для простоты представим, что у нас имеется переменная:
y = 1.85
Очевидно, чтобы она попадала в диапазон [-2; 5], нужно соблюдение двух условий:
y >= -2
y 5
В Python записать это можно, следующим образом:
y >= -2 and y 5
Здесь общее условие будет истинно, если истинно каждое из подусловий.
Противоположный пример, вывод о непопадании в этот же диапазон. Его можно сделать проверками, что:
y -2
y > 5
В Python это записывается так:
y -2 or y > 5
Оператор or выдает истину, если истинно, хотя бы одно из подусловий. Понимаете разницу между and и or? В and общее условие истинно, если истинны оба подусловия, а в or – хотя бы одно.
Также, если мы используем оператор and, то условие:
y >= -2 and y 5
можно записать в краткой форме:
-2 y 5
Это будет одно и то же. Какой вариант записи использовать, решать только вам, что удобнее, то и пишите в своих программах.
Приведу еще один пример. Допустим, мы хотим проверить x на кратность 2 или 3. Очевидно, это можно записать так:
x % 2 == 0 or x % 3 == 0
Также можно инвертировать это условие, то есть, определить, что x не кратна 2 и не кратна 3. Это можно сделать двумя способами:
x % 2 != 0 and x % 3 != 0
Или, используя оператор not (не):
not (x % 2 == 0 or x % 3 == 0)
Обратите внимание на круглые скобки. У оператора not самый высокий приоритет, то есть, он выполняется в первую очередь (как умножение и деление в математике). Поэтому, для инвертирования всего составного условия его необходимо поместить в круглые скобки. Если бы мы записали все в виде:
not x % 2 == 0 or x % 3 == 0
Это было бы эквивалентно условию:
x % 2 != 0 or x % 3 == 0
то есть, мы инвертировали бы только первое выражение. Поэтому, при определении составных условий очень важно знать приоритеты операторов:
Приведение к типу bool
В заключение этого занятия я хочу отметить встроенную функцию
которая выполняет преобразование входного аргумента в логический тип: True или False.
Общее правило здесь такое. Пустое – это False (ложь), а не пустое – True (истина). Что значит пустое и не пустое? Покажу это на примерах. Любое не нулевое число – не пустое, то есть, истина:
bool(1) bool(-10)
А вот 0 – пустое число, дающее False:
bool(0)
Похожим образом и со строками. Пустая строка:
bool("") # False
а любая не пустая:
bool("a") # True bool(" ") # True
Аналогично дело обстоит и с другими типами данных, с которыми мы с вами еще только будем знакомиться.
Итак, из этого занятия вы должны знать операторы сравнения, работу операторов or, and и not, а также уметь пользоваться функцией bool(). Для закрепления этого материала вас ждут практические задания, а я вас буду ждать на следующем занятии.
Видео по теме

#1. Первое знакомство с Python Установка на компьютер

#2. Варианты исполнения команд. Переходим в PyCharm

#3. Переменные, оператор присваивания, функции type и id

#4. Числовые типы, арифметические операции

#5. Математические функции и работа с модулем math

#6. Функции print() и input(). Преобразование строк в числа int() и float()

#7. Логический тип bool. Операторы сравнения и операторы and, or, not

#8. Введение в строки. Базовые операции над строками

#9. Знакомство с индексами и срезами строк

#10. Основные методы строк

#11. Спецсимволы, экранирование символов, row-строки

#12. Форматирование строк: метод format и F-строки

#13. Списки - операторы и функции работы с ними

#14. Срезы списков и сравнение списков

#15. Основные методы списков

#16. Вложенные списки, многомерные списки

#17. Условный оператор if. Конструкция if-else

#18. Вложенные условия и множественный выбор. Конструкция if-elif-else

#19. Тернарный условный оператор. Вложенное тернарное условие

#20. Оператор цикла while

#21. Операторы циклов break, continue и else

#22. Оператор цикла for. Функция range()

#23. Примеры работы оператора цикла for. Функция enumerate()

#24. Итератор и итерируемые объекты. Функции iter() и next()

#25. Вложенные циклы. Примеры задач с вложенными циклами

#26. Треугольник Паскаля как пример работы вложенных циклов

#27. Генераторы списков (List comprehensions)

#28. Вложенные генераторы списков

#29. Введение в словари (dict). Базовые операции над словарями

#30. Методы словаря, перебор элементов словаря в цикле

#31. Кортежи (tuple) и их методы

#32. Множества (set) и их методы

#33. Операции над множествами, сравнение множеств

#34. Генераторы множеств и генераторы словарей

#35. Функции: первое знакомство, определение def и их вызов

#36. Оператор return в функциях. Функциональное программирование

#37. Алгоритм Евклида для нахождения НОД

#38. Именованные аргументы. Фактические и формальные параметры

#39. Функции с произвольным числом параметров *args и **kwargs

#40. Операторы * и ** для упаковки и распаковки коллекций

#41. Рекурсивные функции

#42. Анонимные (lambda) функции

#43. Области видимости переменных. Ключевые слова global и nonlocal

#44. Замыкания в Python

#45. Введение в декораторы функций

#46. Декораторы с параметрами. Сохранение свойств декорируемых функций

#47. Импорт стандартных модулей. Команды import и from

#48. Импорт собственных модулей

#49. Установка сторонних модулей (pip install). Пакетная установка

#50. Пакеты (package) в Python. Вложенные пакеты

#51. Функция open. Чтение данных из файла

#52. Исключение FileNotFoundError и менеджер контекста (with) для файлов

#53. Запись данных в файл в текстовом и бинарном режимах

#54. Выражения генераторы

#55. Функция-генератор. Оператор yield

#56. Функция map. Примеры ее использования

#57. Функция filter для отбора значений итерируемых объектов

#58. Функция zip. Примеры использования

#59. Сортировка с помощью метода sort и функции sorted

#60. Аргумент key для сортировки коллекций по ключу

#61. Функции isinstance и type для проверки типов данных

#62. Функции all и any. Примеры их использования

#63. Расширенное представление чисел. Системы счисления

#64. Битовые операции И, ИЛИ, НЕ, XOR. Сдвиговые операторы

#65. Модуль random стандартной библиотеки

#66. Аннотация базовыми типами

#67. Аннотации типов коллекций

#68. Аннотации типов на уровне классов

#69. Конструкция match/case. Первое знакомство

#70. Конструкция match/case с кортежами и списками

#71. Конструкция match/case со словарями и множествами

#72. Конструкция match/case. Примеры и особенности использования
© 2023 Частичное или полное копирование информации с данного сайта для распространения на других ресурсах, в том числе и бумажных, строго запрещено. Все тексты и изображения являются собственностью сайта
Как сравнить каждый элемент в списке Python?
Мне надо узнать, если каждый элемент больше предыдущего. Как мне это реализовать?
- Вопрос задан более трёх лет назад
- 46892 просмотра
3 комментария
Оценить 3 комментария
посмотрите модуль itertools, вохможно в нём что-то есть для такой задачи
stunoff: Ну посмотрите) И убедитесь, что там ничего нет.
Roman Kitaev: да время не было смотреть его=)
Решения вопроса 1
Читайте help(all) или help(any)
>>> l=[1,2,3] >>> all(l[i] < l[i+1] for i in range(len(l)-1)) True >>> l=[3,2,1] >>> all(l[i] < l[i+1] for i in range(len(l)-1)) False
Ответ написан более трёх лет назад
Нравится 10 9 комментариев
Вот это реально лучший пример. Всё на генераторах, без оверхэда памяти. Не знаю, за что поставили 4 лайка сложному и неверному алгоритму.
Дмитрий @EvilsInterrupt

Roman Kitaev: Несложный и верный. Есть вопросы - пишите в соответствующих комментариях.
aRegius: Сложный в смысле сложности алгоритма. Неверный, если элементы списка неуникальны. Я уже писал об этом.

Roman Kitaev: Ваша субъективная точка зрения мне понятна.
Ваша субъективная точка зрения
У человека не бывает другой

Roman Kitaev: Не было бы - не писал бы.
aRegius: Это лишь Ваше субъективное мнение 🙂

Roman Kitaev: Черт возьми, приятно иметь дело с Python-истами. 🙂
Ответы на вопрос 2

Python Enthusiast
Если каждый элемент больше предыдущего - у вас, де-факто, будет отсортированный список. Поэтому просто сравните ваш текущий с им же отсортированным. Если True - все норм, каждый элемент больше предыдущего, иначе - False:
>>> new_list = [1, 2, 3, 4, 5, 6] >>> new_list == sorted(new_list) True >>> new_list = [1, 2, 3, 4, 8, 6, 5] >>> new_list == sorted(new_list) False
Ответ написан более трёх лет назад
Нравится 7 11 комментариев
Я бы не был так уверен:
In [1]: a = [1,2,3,3,4,5] In [2]: a == sorted(a) Out[2]: True
Скорее, это должно быть так:
a == sorted(frozenset(a))
Мне кажется, не очень хороший пример. Задача элементарным проходом по списку решается за O(n).
Вы предлагаете сначала отсортировать список за O(n*log(n)), а потом еще и сравнить 2 списка O(n).
При этом еще sorted() возвращает новый список, а это займет в 2 раза больше памяти.

Roman Kitaev: Я и не принимал в расчет возможность наличия дублирующих значений.
aRegius: А стоило бы, потому что в задаче иного не сказано.

Roman Kitaev: Стоило или не стоило бы, согласитесь, Роман, это уже в рамках моей компетенции. Если уж быть до конца принципиальным, то перед тем, как браться за решение задач, поставленных клиентом, исполнителю следует задать ему не один, и не два, а пару десятков уточняющих вопросов. Ибо не мне вам объяснять, что за каждым "сказано" на бумаге, разные люди могут видеть разные толкования.

Леонид: О. Big O notation в ход пошли 🙂 Как меня учили мои наставники, оптимизация кода в Python - это в последнюю очередь. Если реально нужно. Нужно ли это ТС в рамках его текущего вопроса? Я не знаю.
aRegius: Алгоритм же обсуждаем, как без big O 😉
Ваши наставники правы, но эта ситуация никак не подходит под "оптимизацию". Такие вещи нужно научиться отсеивать сходу.
aRegius: Соглашусь про уточнения, не соглашусь про "преждевременную оптимизацию". Код желательно писать изначально эффективный, если для этого не нужно делать больше действий, чем для написания неэффективного кода. Например, незачем писать sum([func(x) for x in iterable]) , если можно написать sum(func(x) for x in iterable) . Этот код не создаст лишний список в памяти, выглядит лучше и пишется быстрее. И между таких подходом и оптимизацией, всё-таки, есть разница 🙂
Автор не может проверить отсортирован список или нет, а вы за какието непонятные О(н) спорите))

Леонид: Можно учиться "отсеивать сходу", а можно понимать рамки допустимого использования инструмента в зависимости от условий и пользоваться этим в своих интересах и/или интересах клиента. Тут уж каждый сам себе хозяин-барин.

Roman Kitaev: По сути, Роман, и в рамках приведенного примера с функцией sum(), не могу не согласиться, поскольку придерживаюсь той же точки зрения. А по факту - подобные примеры крайне редки. Да и в этом, "лишний список в памяти" - все зависит от задачи. А вот лучше читается - да.
