Разделы инструкций

В сети

Пользователей: 87
Из них просматривают:
Аналоги: 21. Даташиты: 10. Инструкции: 9. Новости: 16. Остальное: 7. Программы: 1. Производители: 3. Профиль пользователя: 1. Форум: 16. Чат: 3.
Участников: 5
Гостей: 82

an , KT315 , Google , wolf170571 , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

Оглавление

5.3. Дополнительные возможности при конструировании списков

Начиная с версии 2.0, языка Python, существуют дополнительные возможности конструирования списков, не прибегая к средствам функционального программирования. Такие определения списков записываются с использованием в квадратных скобках выражения и следующих за ним блоков for:

 

>>> freshfruit = [' banana', ' loganberry ', 'passion fruit ']
>>> [weapon.strip() for weapon in freshfruit]
['banana', 'loganberry', 'passion fruit']
>>> vec = [2, 4, 6]
>>> [3*x for x in vec]
[6, 12, 18]
>>> [{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]]

 

Элементы можно фильтровать, указав условие, записываемое с помощью ключевого слова if:

 

>>> [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]
  File "<stdin>", line 1
    [x, x**2 for x in vec]
               ^
SyntaxError: invalid syntax
>>> [(x, x**2) for x in vec]
[(2, 4), (4, 16), (6, 36)]

 

Если в конструкторе указано несколько блоков for, элементы второй последовательности перебираются для каждого элемента первой и т.д., то есть перебираются все комбинации:

 

>>> 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]

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити

Разное

Пайка алюминия и его сплавов.

Интересно

Выходные каскады УНЧ бывают разных типов и не всегда есть возможность осуществить первое включение без оконечного каскада. В этом случае возможна замена низкоомных токоизмерительных резисторов на номиналы 5-10 Ом.

Похожие инструкции