列表推导式
# [ 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)
#[]