Поскольку я не являюсь «родным» пользователем Python, я использовал bool(prod( ... ), чтобы проверить, все ли элементы в списке логических значений являются истинными. Я использовал свойство , это логическое значение сопоставляется с 0 и 1, и поскольку любой 0 в продукте делает весь продукт равным 0, это удовлетворяет моим потребностям.
Теперь наткнулся на все(... ) Как видно из этой программы, они возвращают эквивалентный результат:
.from random import randint
from math import prod
# create a array where each element has a 10% chance of being False, else True
l_bool=[randint(0,9)>0 for _ in range(10)]
# check if all elements are True
bool(prod(l_bool)),all(l_bool)
Я понимаю, что prod() более универсален, так как ему необходимо хранить промежуточный результат произведения, и он «предназначен специально для использования с числовыми значениями».< /p>
Из документации all() видно, что он выполняет итерацию ввода до тех пор, пока не поймает False, и, вероятно, оптимизирован именно для этой задачи.
>
Однако я предполагаю, что prod() внутренне также возвращает 0, как только он встречается, и, насколько я понимаю, итерации не должны приводить к большим накладным расходам для хранения промежуточного результата умножения в памяти.
Я все это понимаю () здесь следует использовать, но есть ли какая-нибудь значительная разница, которую я упускаю из виду? Думаю, так и должно быть, поскольку bool(prod( ... ) значительно (~45%) медленнее:
import time
n=100_000
t0 = time.time()
for _ in range(n):
bool(prod(randint(0,9)>0 for _ in range(10)))
t_bool_prod=time.time()-t0
t1=time.time()
for _ in range(n):
all(randint(0,9)>0 for _ in range(10))
t_all=time.time()-t1
print(f"bool(prod( ... )) takes {round(100*((t_bool_prod/t_all)-1),2)}% longer!")
Подробнее здесь: https://stackoverflow.com/questions/793 ... od-and-all
Разница между bool(prod(...)) и all(...) ⇐ Python
Программы на Python
1736291883
Anonymous
Поскольку я не являюсь «родным» пользователем Python, я использовал bool(prod( ... ), чтобы проверить, все ли элементы в списке логических значений являются истинными. Я использовал свойство , это логическое значение сопоставляется с 0 и 1, и поскольку любой 0 в продукте делает весь продукт равным 0, это удовлетворяет моим потребностям.
Теперь наткнулся на все(... ) Как видно из этой программы, они возвращают эквивалентный результат:
.from random import randint
from math import prod
# create a array where each element has a 10% chance of being False, else True
l_bool=[randint(0,9)>0 for _ in range(10)]
# check if all elements are True
bool(prod(l_bool)),all(l_bool)
Я понимаю, что prod() более универсален, так как ему необходимо хранить промежуточный результат произведения, и он «предназначен специально для использования с числовыми значениями».< /p>
Из документации all() видно, что он выполняет итерацию ввода до тех пор, пока не поймает False, и, вероятно, оптимизирован именно для этой задачи.
>
Однако я предполагаю, что prod() внутренне также возвращает 0, как только он встречается, и, насколько я понимаю, итерации не должны приводить к большим накладным расходам для хранения промежуточного результата умножения в памяти.
Я все это понимаю () здесь следует использовать, но есть ли какая-нибудь значительная разница, которую я упускаю из виду? Думаю, так и должно быть, поскольку bool(prod( ... ) значительно (~45%) медленнее:
import time
n=100_000
t0 = time.time()
for _ in range(n):
bool(prod(randint(0,9)>0 for _ in range(10)))
t_bool_prod=time.time()-t0
t1=time.time()
for _ in range(n):
all(randint(0,9)>0 for _ in range(10))
t_all=time.time()-t1
print(f"bool(prod( ... )) takes {round(100*((t_bool_prod/t_all)-1),2)}% longer!")
Подробнее здесь: [url]https://stackoverflow.com/questions/79335929/difference-between-boolprod-and-all[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия