Я читаю документацию Python, чтобы действительно углубленно изучать язык Python и сталкивался с функциями фильтра и карты. Я использовал фильтр раньше, но никогда не отображал карту, хотя я видел как в различных вопросах Python здесь, на SO.Python: Разница между фильтром (функция, последовательность) и карта (функция, последовательность)
Прочитав о них в учебнике Python, я смущен различием между ними. Например, из 5.1.3. Functional Programming Tools:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
и
>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
Они выглядели почти точно те же функции для меня, поэтому я пошел в терминал запустить Python в интерактивном режиме и испытываются мой собственный случай. Я использовал map
как для первого, так и для второго экземпляра выше, а для первого (return x % 2 != 0 and x % 3 != 0
) он вернул список булевых чисел, а не цифр.
Почему map
иногда возвращает логическое и другое фактическое возвращаемое значение?
Может ли кто-нибудь объяснить мне именно разницу между map
и filter
?
, что имеет смысл сейчас, я вижу, как этот термин фильтра предполагает, что функция делает против карты. – samrap
На самом деле имя 'map()' имеет смысл, а в каком-то поле, когда карта используется в качестве глагола, это означает найти от 1 до 1 соответствующую связь. Например, в математике: «map x to y» или в генетике: «сопоставьте диабет с геном». Одна вещь, приятная в отношении «Python», такова: имена часто имеют смысл. –
это хороший момент. Забавно, насколько похожи некоторые аспекты программирования на повседневные примеры.Как и я в алгебре 2, и мы изучаем функции f (x), а половина класса тупика, но идея на 100% аналогична функциям программирования. – samrap