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