|
发表于 2021-10-13 15:08:40
|
显示全部楼层
回帖奖励 +1 鱼币
本帖最后由 傻眼貓咪 于 2021-10-13 15:10 编辑
Python 推导式 comprehensions(又称解析式)
推导式不是列表专有特性,除了列表(list),集合(set)、字典(dictionary)、元祖(tuple)都可以用推导式,如下:- a = {i:i for i in range(5)} # 字典 dictionary
- b = {i for i in range(5)} # 集合 set
- c = tuple(i for i in range(5)) # 元祖 tuple
- d = [i for i in range(5)] # 列表 list
- print(a)
- print(b)
- print(c)
- print(d)
复制代码- {0: 0, 1: 1, 2: 2, 3: 3, 4: 4}
- {0, 1, 2, 3, 4}
- (0, 1, 2, 3, 4)
- [0, 1, 2, 3, 4]
复制代码
推导式格式:[表达式(Expression) 可迭代的(Iterable)条件语句:可选(condition)],如下:
范例 1:- arr = [i for i in range(20) if i%2] # 赋值新列表 arr 值为推导式的结果
- # i 为表达式
- # for i in range(20) 为可迭代
- # if i%2 为条件语句(这里的 i%2 表示如果 i除2得余数 0,则返回假 False,否则返回真 True,除了 0 所有数字都是真 True)
复制代码 范例 2:- [print(i, end = ' ') for i in range(10)] # 这里没有赋值任何东西,单纯推导式,但还是会执行打印,因为 print() 是函数(有括号表示执行)
- # print(i, end = ' ') 为表达式,这里的 end 是 print() 参数,表示打印最后是什么(默认是换行 \n)
- # for i in range(10) 为可迭代的
- # 这里没有条件语句(推导式条件语句可有可无)
复制代码 范例 3:- arr = [(i, j) for i in range(2) for j in range(2)]
- # 以上推导式如同以下代码:
- arr = []
- for i in range(2):
- for j in range(2):
- arr.append((i, j))
- # (i, j) 为表达式(表示元祖)
- # for i in range(2) for j in range(2) 为 2个 可迭代的,当然你想要 5个 或 10个 都可以
- print(arr)
复制代码- [(0, 0), (0, 1), (1, 0), (1, 1)]
复制代码 |
|