列表推导式

# [ expression for item in iterable ]

names = ['1_1', '1_2', '11_1', '11_2']
[name for name in names if len(name) == 3 and name[1] == '_'] 
# ['1_1', '1_2']

[number for number in range(1, 6)]
# [1, 2, 3, 4, 5]
[number - 1 for number in range(1, 6)]
# [0, 1, 2, 3, 4]
[number for number in range(1, 6) if number % 2 == 1]
# [1, 3, 5]

rows = range(1, 4)
cols = range(1, 3)
[(row, col) for row in rows for col in cols]
# [(1, 1), (1, 2), (2, 1), (2, 2), (3, 1), (3, 2)]

 

x = [word.capitalize()
    for line in ("hello world?", "world!", "or not")
    for word in line.split()
    if not word.startswith("or")]

x
#['Hello', 'World?', 'World!', 'Not']

 

 

字典推导式

# { key_expression : value_expression for expression in iterable }

word = 'letters'
word.count('l')
# 1
{letter : word.count(letter) for letter in set(word)}
# {'e': 2, 'l': 1, 'r': 1, 's': 1, 't': 2}

 

集合推导式

{ number for number in range(1, 6) if number % 3 == 1 }
# {1, 4}

 

生成器推导式

number_thing = (number for number in range(1,6))
number_thing
#<generator object <genexpr> at 0x7ff718252b48>
list(number_thing)
#[1, 2, 3, 4, 5]
list(number_thing)
#[]