list comprehension - продолжение

list comprehension - продолжение

Limera1n

Всем хай.

Сегодня продолжим изучать list comprehension.

В самом начале списка, когда мы обозначаем [n for n in range(0, 11)] допустим, в левой части используется для модификации текущего элемента, например мы можем выбрать квадраты чисел от нуля до десяти. Пример:

Здесь, чтобы получить квадраты чисел мы использовали n*n. То есть в этой части мы можем производить некие манипуляции с текущей переменной.

Так же в конце синтаксиса можем указывать условия, например, если мы хотим выбрать квадраты чисел только для нечетных чисел мы можем в конце написать условие:

"if n%2!=0" это у нас условие, которое значит - если остаток числа деленного не 2 не равен нулю, то это нечетное число и в такой записи выбираться будут только нечетные числа и возводить в квадрат мы будем только их.

Очень удобно, потому что, если мы бы сейчас не использовали list comprehension, мы бы писали целый for с условием и заняло бы это не одну строчку.

Вот еще один пример. Представим, что у нас есть список длин выраженных в сантиметрах и мы хотим преобразовать их в дюймы и получить ответ в дюймах. Мы можем использовать для этого list comprehension:

Рассказываю, что мы тут сделали. Мы взяли рандомные (случайные) числа. Создали список len_in_inches, в который будут записаны дюймы. Мы вызвали функцию round для округления, ввели в нее переменную cm деленную на 2.54, чтобы получить дюймы, и округлили до второго знака после точки, дальше мы делаем цикл и выводим. Вот и получился у нас быстрый перевод сантиметров в дюймы.

Мы рассмотрели, как можно вставлять определенные условия в list comprehension, и с ним нужно быть аккуратным, так как код может стать не читаемым, например list comrehension позволяет использовать if else, причем позволяет использовать их в левой части. Давайте посмотрим, как это все выглядит:

Здесь мы создали некий рейтинг и сделали список, в который поместятся такие значения - MASTER, если рейтинг больше, либо равно значению 2500, в противном случае NOOB. В принципе, здесь еще все более менее читается, однако, если наворотить сложных условий можно превратить это все в нечитаемое месиво.

А мы должны стараться, чтобы наш код оставался как можно более читаемым.

Report Page