鱼C论坛

 找回密码
 立即注册
查看: 1154|回复: 3

[已解决]列表推导式,后面的if条件是对前面有所有都适用,还是一一对应的

[复制链接]
发表于 2018-6-2 23:03:34 | 显示全部楼层 |阅读模式

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

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

x
如题
  1. list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
复制代码

我这个code可能举例不恰当
后面的两个if是一一对应前面的for的
还是运行着两个for的时候,后面的条件都要满足
最佳答案
2018-6-2 23:41:15
本帖最后由 simplerjiang 于 2018-6-2 23:47 编辑

[(0, 1), (0, 3), (0, 5), (0, 7), (0, 9), (2, 1), (2, 3), (2, 5), (2, 7), (2, 9), (4, 1), (4, 3), (4, 5), (4, 7), (4, 9), (6, 1), (6, 3), (6, 5), (6, 7), (6, 9), (8, 1), (8, 3), (8, 5), (8, 7), (8, 9)]

这个问题非常简单,我们print出来看看就知道了
首先我们看到,很明显,前for 对应前if, 后for 对应后if, 同时我们也看到了,y的循环其实一共循环了5次

你这个问题就非常有趣了,要是你在工作中写这样的代码, 你的同事会打死你的

为了你日后不被你的同事打死,我拆分成正常的代码给你看看
  1. list = []
  2. for x in range(10):
  3.         if x%2 == 0:
  4.                 for y in range(10):
  5.                         if y%2 != 0:
  6.                                 list.append((x,y))
  7.                        

  8. print(list)
  9. input()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-2 23:41:15 | 显示全部楼层    本楼为最佳答案   
本帖最后由 simplerjiang 于 2018-6-2 23:47 编辑

[(0, 1), (0, 3), (0, 5), (0, 7), (0, 9), (2, 1), (2, 3), (2, 5), (2, 7), (2, 9), (4, 1), (4, 3), (4, 5), (4, 7), (4, 9), (6, 1), (6, 3), (6, 5), (6, 7), (6, 9), (8, 1), (8, 3), (8, 5), (8, 7), (8, 9)]

这个问题非常简单,我们print出来看看就知道了
首先我们看到,很明显,前for 对应前if, 后for 对应后if, 同时我们也看到了,y的循环其实一共循环了5次

你这个问题就非常有趣了,要是你在工作中写这样的代码, 你的同事会打死你的

为了你日后不被你的同事打死,我拆分成正常的代码给你看看
  1. list = []
  2. for x in range(10):
  3.         if x%2 == 0:
  4.                 for y in range(10):
  5.                         if y%2 != 0:
  6.                                 list.append((x,y))
  7.                        

  8. print(list)
  9. input()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-3 06:00:33 From FishC Mobile | 显示全部楼层
你这例子确实比较特殊
后面的两个if都是在两层循环里面的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-3 19:28:09 | 显示全部楼层
BngThea 发表于 2018-6-3 06:00
你这例子确实比较特殊
后面的两个if都是在两层循环里面的

所以说前面的循环都要满足后面的if,并不是一一对应的?
如 循环A和b if A和B
if a 和 b
  循环ab
还是这种情况
if a
  循环a
     if b
        循环b
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 03:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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