Встроенные функции. Итерируемые объекты

Встроенные функции. Итерируемые объекты

Limera1n

Чтож, мы посмотрели на математические функции, теперь хочется посмотреть на такие функции,которые используются с итерируемыми объектами.

И первой такой функцией является функция all, которая возвращает значение типа bool, которое становится True, если все выражения или элементы переданные этой функции вычисляются в True. Но давайте посмотрим на пример, чтобы стало более понятно:

Сначала без выражений, просто передаем булевые литералы (True, False). Передаем булевую функцию содержащую список из всех True, вторая будет содержать одно False. Получаем в ответе True, False. Почему? Потому что all возвращает True, только если абсолютно все элементы переданные в функцию вычисляются в True, если хотя бы один False, тогда будет False.

Когда это полезно? Например, давайте представим, что у нас есть список игроков из тюплов. Предположим, что мы хотим проверить, все ли игроки имеют рейтинг более 99 и в результате мы хотим получить булевое значение, которое покажет, все ли элементы соответствуют нашему условию. Использовать мы будем tuple unpacking, и не забываем, что после for у нас идет два обозначения, первое - имя, второе - рейтинг:

В итоге получаем, что в списке у нас все игроки имеют рейтинг больше 99, и all вернул нам True. А если мы проверим, больше ли рейтинг 110 - то получим False.

Другой функцией является функция any. Она работает наоборот, если хотя бы один элемент, который передается функции является True, то вывод будет True:

Другой интересной функцией является функция zip, которая позволяет склеить два итерируемых объекта:

Мы создали две переменных, и склеили с помощью функции zip. zip имеет тип, как ни странно zip. Когда мы запрашиваем zipped, мы видим, что этот объект находится по определенному адресу 0x00***, то есть по факту на данном этапе zip не склеил эти итерируемые объекта, а склеил он тогда, когда мы вызвали функцию list. Это называется ленивое вычисление, то есть по факту вызова функции zip вычисления не происходит, а происходит только тогда, когда по этому объекту мы пройдемся циклом, либо мы вызовем функцию list, к примеру для преобразования. Еще обрачу внимание, что склеены будут только a-10, b-20, c-30, а d будет проигнорирован, то есть излишние элементы будут отсечены.

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

Для того, чтобы вычислить юникодный код символа можно использовать функцию ord:

В данном случае в юникодной таблице символу a соответствует код 97.

Обратной функцией мы можем проверить - chr:



Report Page