鱼C论坛

 找回密码
 立即注册
查看: 4408|回复: 16

[学习笔记] 列表推导式

[复制链接]
发表于 2021-10-13 09:40:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
[输出 循环 判断]
想看看你们的理解
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-13 15:08:40 | 显示全部楼层

回帖奖励 +1 鱼币

本帖最后由 傻眼貓咪 于 2021-10-13 15:10 编辑
Python 推导式 comprehensions(又称解析式)

推导式不是列表专有特性,除了列表(list)集合(set)字典(dictionary)元祖(tuple)都可以用推导式,如下:
  1. a = {i:i for i in range(5)}    # 字典 dictionary
  2. b = {i for i in range(5)}      # 集合 set
  3. c = tuple(i for i in range(5)) # 元祖 tuple
  4. d = [i for i in range(5)]      # 列表 list

  5. print(a)
  6. print(b)
  7. print(c)
  8. print(d)
复制代码
  1. {0: 0, 1: 1, 2: 2, 3: 3, 4: 4}
  2. {0, 1, 2, 3, 4}
  3. (0, 1, 2, 3, 4)
  4. [0, 1, 2, 3, 4]
复制代码


推导式格式:[表达式(Expression) 可迭代的(Iterable)条件语句:可选(condition)],如下:
范例 1:
  1. arr = [i for i in range(20) if i%2] # 赋值新列表 arr 值为推导式的结果

  2. # i 为表达式
  3. # for i in range(20) 为可迭代
  4. # if i%2 为条件语句(这里的 i%2 表示如果 i除2得余数 0,则返回假 False,否则返回真 True,除了 0 所有数字都是真 True)
复制代码
范例 2:
  1. [print(i, end = ' ') for i in range(10)] # 这里没有赋值任何东西,单纯推导式,但还是会执行打印,因为 print() 是函数(有括号表示执行)

  2. # print(i, end = ' ') 为表达式,这里的 end 是 print() 参数,表示打印最后是什么(默认是换行 \n)
  3. # for i in range(10) 为可迭代的
  4. # 这里没有条件语句(推导式条件语句可有可无)
复制代码
  1. 0 1 2 3 4 5 6 7 8 9
复制代码
范例 3:
  1. arr = [(i, j) for i in range(2) for j in range(2)]

  2. # 以上推导式如同以下代码:

  3. arr = []
  4. for i in range(2):
  5.     for j in range(2):
  6.         arr.append((i, j))

  7. # (i, j) 为表达式(表示元祖)
  8. # for i in range(2) for j in range(2) 为 2个 可迭代的,当然你想要 5个 或 10个 都可以

  9. print(arr)
复制代码
  1. [(0, 0), (0, 1), (1, 0), (1, 1)]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-10-19 10:36:42 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-24 12:56:33 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-24 13:34:22 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-24 14:05:02 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-24 17:45:12 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-24 21:21:41 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-24 21:25:49 | 显示全部楼层
芜湖
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-25 09:11:03 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-25 18:20:44 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-26 08:39:08 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-26 09:17:47 | 显示全部楼层

回帖奖励 +1 鱼币

  1. >>> a = [alp for alp in '我是你爹']
  2. >>> a
  3. ['我', '是', '你', '爹']
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-26 09:22:36 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-26 21:01:23 From FishC Mobile | 显示全部楼层
Python初学者8号 发表于 2021-10-26 09:17

你这么干,不是找骂呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-29 16:20:13 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-11-21 15:29:39 | 显示全部楼层
11
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 22:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表