Что означает «или» в инструкции return python / Объяснение суммы подмножества списка

Я делал сложную задачу Python Array Addition I, но я не мог понять это правильно. Я видел правильный код другого пользователя, и я немного озадачен этим. В основном, что делает «или» в заявлении о возврате? Это мешает мне полностью понять решение этой проблемы. Благодарю.

Возникает вопрос: пусть функция ArrayAdditionI (arr) принимает массив чисел, хранящихся в arr, и возвращает строку true, если любая комбинация чисел в массиве может быть добавлена ​​до максимального числа в массиве, в противном случае верните string false. Например: если arr содержит [4, 6, 23, 10, 1, 3], вывод должен возвращать true, потому что 4 + 6 + 10 + 3 = 23. Массив не будет пустым, не будет содержать все те же элементы, и могут содержать отрицательные числа.

def subsetsum(target, arr): if len(arr) == 0: return target == 0 return subsetsum(target, arr[1:]) or subsetsum(target - arr[0], arr[1:]) def ArrayAdditionI(arr): arr = sorted(arr) target = arr[-1] arr = arr[:-1] return 'true' if subsetsum(target, arr) else 'false' # keep this function call here # to see how to enter arguments in Python scroll down print ArrayAdditionI(raw_input()) 

2 Solutions collect form web for “Что означает «или» в инструкции return python / Объяснение суммы подмножества списка”

Вот как это сломать:

 return subsetsum(target, arr[1:]) or subsetsum(target - arr[0], arr[1:]) 

Это имеет форму return a or b где a = subsetsum(target, arr[1:]) и b = subsetsum(target - arr[0], arr[1:]) .

Если bool (a) имеет значение True , то выражение a or b замыкает и возвращает любое значение a . Если bool(a) является False , тогда b необходимо оценить, чтобы определить значение выражения a or b .

Таким образом, return a or b является сокращением для следующего, с тем преимуществом, что b не оценивается (если это функция), если bool (a) является True, благодаря логике короткого замыкания.

 if bool(a): return a else: return b 

Это не делает ничего особенного в контексте «возвращения», так что это путает. Уберите возвращение и просто посмотрите на булево выражение

 False or True 

Будет оцениваться значение True, потому что одно из выражений оценивает значение True. Пример с возвратом – это просто результат вычисления булевского выражения и его возврата. Так что True, если какой-либо из подмножеств () вызывает return True, в противном случае False.

 >>> False or True True >>> False or False False 
  • Автоматически растущие списки в Python
  • Python, разделяющий список на основе слова разделителя
  • mylist = list () vs mylist = в Python
  • Средние дублированные значения из двух парных списков в Python
  • В чем разница между списками и кортежами?
  • питон; изменение списка внутри функции
  • Циркулярная ссылка с списками python
  • Создание списка равномерно расположенных номеров в определенном диапазоне в python
  •  
    Interesting Posts for Van-Lav

    Как сохранить модели выравнивания Python NLTK для последующего использования?

    Пакет Python в автономном режиме

    Выполнение операций со всеми значениями массива numpy, ссылающихся на i и j

    Соединение с сервером IBM AS400 для работы с базой данных зависает

    загрузить внешние библиотеки внутри кода pyspark

    Создайте функцию, которая открывает файл и создает словарь

    Частота и вращение меток оси X в Matplotlib

    Внедрить функцию пользовательских затрат в keras, которая требует вывода целого размера партии

    Использование Python Iterparse для больших файлов XML

    Как мне выполнить расширенную автовивитацию хэша Python?

    Каков наиболее эффективный способ создания словаря из двух столбцов Pandas Dataframe?

    Запись и запуск pyspark в IntelliJ IDEA

    Используйте Python для получения состояния двигателя внутреннего сгорания, основанного на срабатывании свечей зажигания

    Tensorflow считывает изображения с помощью меток

    Функция переопределения Create в Odoo

    Python - лучший язык программирования в мире.