Выражения в списках.
В Питоне есть альтернативный способ создания списков по определённым правилам, позволяющий избегать использования функций filter(), map(), reduce(): использование выражений внутри списков. Такие выражения имеют следующий формат: заголовок цикла for, задающий ограничения при создании списков, за этим циклом может(необязательно) следовать некоторое количество условий if и циклов for, по которым, собственно, и создаётся результативный список. Приведём пример таких выражений:
>>> freshfruit = [' банан', ' ананас', 'яблоко '] >>> [weapon.strip() for weapon in freshfruit] ['банан', 'ананас', 'яблоко']
>>> vec = [2, 4, 6] >>> [3*x for x in vec] [6, 12, 18]
>>> [3*x for x in vec if x > 3] [12, 18]
>>> [3*x for x in vec if x < 2] []
>>> [{x: x**2} for x in vec] [{2: 4}, {4: 16}, {6: 36}]
>>> [[x,x**2] for x in vec] [[2, 4], [4, 16], [6, 36]]
>>> [(x, x**2) for x in vec] [(2, 4), (4, 16), (6, 36)]
>>> vec1 = [2, 4, 6] >>> vec2 = [4, 3, -9] >>> [x*y for x in vec1 for y in vec2] [8, 6, -18, 16, 12, -36, 24, 18, -54]
>>> [x+y for x in vec1 for y in vec2] [6, 5, -7, 8, 7, -5, 10, 9, -3]
>>> [vec1[i]*vec2[i] for i in range(len(vec1))] [8, 12, -54]