python推导式

python推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。

python支持各种数据结构的推导式:

  • 列表推导式
  • 字典推导式
  • 集合推导式
  • 元组推导式

列表推导式

过滤掉长度小于或等于3的字符串列表,并将剩下的转换成大写字母

1
2
3
4
>>> names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
>>> new_names = [name.upper()for name in names if len(name)>3]
>>> print(new_names)
['ALICE', 'JERRY', 'WENDY', 'SMITH']

计算 30 以内可以被 3 整除的整数

1
2
3
>>> multiples = [i for i in range(30) if i % 3 == 0]
>>> print(multiples)
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

字典推导式

使用字符串及其长度创建字典

1
2
3
4
5
listdemo = ['Google','Runoob', 'Taobao']
# 将列表中各字符串值为键,各字符串的长度为值,组成键值对
>>> newdict = {key:len(key) for key in listdemo}
>>> newdict
{'Google': 6, 'Runoob': 6, 'Taobao': 6}

提供三个数字,以三个数字为键,三个数字的平方为值来创建字典

1
2
3
4
5
>>> dic = {x: x**2 for x in (2, 4, 6)}
>>> dic
{2: 4, 4: 16, 6: 36}
>>> type(dic)
<class 'dict'>

集合推导式

计算数字 1,2,3 的平方数

1
2
3
>>> setnew = {i**2 for i in (1,2,3)}
>>> setnew
{1, 4, 9}

元组推导式(生成器表达式)

元组推导式可以利用range区间,元组,列表,字典和集合等数据类型,快速生成一个满足指定需求的元组。

1
2
3
4
5
6
>>> a = (x for x in range(1,10))
>>> a
<generator object <genexpr> at 0x7faf6ee20a50> # 返回的是生成器对象

>>> tuple(a) # 使用 tuple() 函数,可以直接将生成器对象转换成元组
(1, 2, 3, 4, 5, 6, 7, 8, 9)