推导式是从一个或多个迭代器快速简洁地创建数据结构的一种方法。可以将循环和条件判断相结合,避免冗长的代码。
1、列表推导式
#[expression for item in iterable] number_list=[number for number in range(1,6)] #[expression for item in iterable if condition] a_list=[number for number in range(1,6) if number%2==1] rows=range(1,4) cols=range(1,3) cells=[(row,col) for row in rows for col in cols]
2、字典推导式
#{key_expression : value_expression for expression in iterable} word='letters' letter_counts={letter:word.count(letter) for letter in word} letter_counts2={letter:word.count(letter) for letter in set(word)}
3、集合推导式
#{expression for expression in iterable} a_set={number for number in range(1,6) if number%3==1}
4、生成器推导式
注意,元组没有推导式。圆括号之间的是生成器推导式,返回一个生成器对象。
可以直接对生成器对象迭代,但是一个生成器只能运行迭代一次,可以通过list()函数生成列表。
number_thing=(number for number in range(1,6)) >>>type(number_thing) <class 'generotor'>