Python — для выражения (содержимое 1)

**

Python — для выражения

**
Перепечатано с:
https://www.cnblogs.com/mingmingming/p/11055282.html , 16 марта 2020 г.

1. для выражения
1. для формата синтаксиса выражения и его использования.

Для выражения используются итерируемые объекты для создания нового списка. Для выражения также называется пониманием списка. Конкретный формат синтаксиса выглядит следующим образом:

[表达式 for 循环计数器 in 可迭代对象]

пример:

a = [ i + i for i in range(0,5) ]
print (a)
# 返回的是一个列表,打印 [0, 2, 4, 6, 8] 

В приведенном выше примере диапазон эквивалентен содержанию 5 элементов (0, 1, 2, 3, 4), выполнению выражения i + i 5 раз и сбору значений 5 выполнений в качестве новых элементов списка.

2. Добавьте условие if к выражению for.
Выражение for также может добавлять условие if после итерируемого объекта. Выражение for будет перебирать только те элементы, которые соответствуют условиям.

пример:

a = [ i + i for i in range(0,5) if i % 2 == 0]
print (a)
# 打印 [0, 4, 8]

В приведенном выше примере, если i % 2 == 0, отфильтровываются нечетные числа в диапазоне и повторяются только три элемента (0, 2, 4), которые соответствуют условиям.


3. Если вы замените квадратные скобки [] на круглые скобки () при выводе генератора для выражения, генератор будет сгенерирован. Генератор также можно выполнять итерации с использованием цикла for.

a = ( i + i for i in range(5) )
print (a)
# 将不再生成列表,而是一个生成器。 打印 <generator object <genexpr> at 0x0000000002691B10>
 
# 使用for循环迭代生成器
for h in a:
    print (h,end = '\t')
# 打印 0       2       4       6       8     

4. Вложенность для выражения

Выражение for также может использовать несколько циклов.

пример:

a = [[i,j] for i in range(5) for j in range(6,8)]
print (a)
# 打印 [[0, 6], [0, 7], [1, 6], [1, 7], [2, 6], [2, 7], [3, 6], [3, 7], [4, 6], [4, 7]]

В приведенном выше примере это эквивалентно следующему вложенному циклу:

for i in range(5):
    for j in range(6,8):
        print ([i,j])

Во вложенных выражениях for вы также можете добавлять условия if,
например:

a = [[i,j] for i in range(5) for j in range(5) if j == i]
print (a)
#打印 [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4]]  

В приведенном выше примере итерация произойдет только тогда, когда i и j равны.

Guess you like

Origin blog.csdn.net/sanxiaw/article/details/104908810