鱼C论坛

 找回密码
 立即注册
查看: 1990|回复: 8

关于Python课后题中关于列表推导式的过程迷惑

[复制链接]
发表于 2017-9-20 11:30:10 | 显示全部楼层 |阅读模式

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

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

x
对于论坛主甲神兄在课后作业中关于列表推导式list1 = [(x,y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]用for循环推到还原出来,给出的结果是
list1 = []
for x in range(10):
    for y in range(10):
        if x%2 == 0:
                if y%2 != 0:
                           list1.append((x,y))
而我自己打码出来是:
list1 = []
for x in range(10):
    for y in range(10):
        if x%2 == 0 and y%2 != 0:
                list1.append((x,y))
或者
list1 = []
for x in range(10):
        if x%2 == 0:
                for y in range(10):
                        if y%2 != 0:
                                list1.append((x,y))
得出来的为空是怎么回事,过程有什么不同之处吗,敬请解惑,谢谢

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-20 12:30:46 | 显示全部楼层
本帖最后由 铁棍阿童木 于 2017-9-20 12:32 编辑

原因就是你只是把推导结果加入到列表list1里面去了,并没有要求计算机输出到屏幕,当然是空白的咯。

for 循环之后要加上print(list1)啊。你不输出怎么看得见。
不加print语句就要在IDEL计算结束以后敲击list1+Enter键才能看到结果啊。你试试。
  1. list1 = []
  2. for x in range(10):
  3.     for y in range(10):
  4.         if x%2 == 0 and y%2 != 0:
  5.             list1.append((x, y))
  6. print(list1)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-20 12:45:11 | 显示全部楼层
逻辑,代码一不一样没 关系,主要看他的逻辑

请问这里哪里不一样了。结果是一样的。

2017-09-20_124418.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-20 14:14:21 | 显示全部楼层
我想问的是这种方法实现的逻辑过程史一致的么,特别是我的:
list1 = []
for x in range(10):
    for y in range(10):
        if x%2 == 0 and y%2 != 0:
                list1.append((x,y))
实现过程应该是没有问题的吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-20 14:16:13 | 显示全部楼层
铁棍阿童木 发表于 2017-9-20 12:30
原因就是你只是把推导结果加入到列表list1里面去了,并没有要求计算机输出到屏幕,当然是空白的咯。

for ...

这里有个问题就是,在甲神的代码中一样没有要求print输出,而是在两个for循环语句之中实现了列表的自动输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-20 14:20:47 | 显示全部楼层
ba21 发表于 2017-9-20 12:45
逻辑,代码一不一样没 关系,主要看他的逻辑

请问这里哪里不一样了。结果是一样的。

这里为何还要输入list才能输出呢,在甲神的代码中仅仅用两个for语句循环就实现了,不用list命令输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-20 14:58:20 | 显示全部楼层
本帖最后由 铁棍阿童木 于 2017-9-20 14:59 编辑
cxg1482 发表于 2017-9-20 14:14
我想问的是这种方法实现的逻辑过程史一致的么,特别是我的:
list1 = []
for x in range(10):


是一样的,没问题。逻辑一致。小甲鱼相当于用了嵌套,你的则是用and逻辑与取消了嵌套。不论是他的还是你的代码,如果没有键入list1+Enter或者在代码中加入print语句,是不可能输出结果到屏幕的。你试试~

如果还不相信自己,就@小甲鱼看看他是怎么回复的!哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-20 18:52:59 | 显示全部楼层
铁棍阿童木 发表于 2017-9-20 14:58
是一样的,没问题。逻辑一致。小甲鱼相当于用了嵌套,你的则是用and逻辑与取消了嵌套。不论是他的还是 ...

我试了,就是我的代码需要print或者list+enter才能输出,甲鱼坛主的不需要
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-20 22:27:32 | 显示全部楼层
cxg1482 发表于 2017-9-20 18:52
我试了,就是我的代码需要print或者list+enter才能输出,甲鱼坛主的不需要

你把他的代码贴出来,怎么可能。这个课后作业我看了,复制了小甲鱼的代码,一样要print或者list1+enter
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 18:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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