鱼C论坛

 找回密码
 立即注册
查看: 1160|回复: 6

[已解决]课后题打了激素的数组3,

[复制链接]
发表于 2020-7-4 05:46:00 | 显示全部楼层 |阅读模式

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

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

x
问题:请先在 IDLE 中获得下边列表的结果,并按照上方例子把列表推导式还原出来。

    >>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]

答案给的是
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  (if y%2 !)= 0:
                list1.append((x, y))

结果跑 idle 不出答案, 无解。   不太明白逻辑有何不同, 第一轮x为0 , Y 为0 ,  都不符合条件,  这时, 答案的做法,是回到那一层?我的 应该是回到第一层For, 为何答案的做法能继续往下跑?  
还有就是  append()  课上讲,只能加一个元素,   然后 这里加个括号又可以两个变量了,  那么我 加个括号放N多个逗号隔开变量,或者干脆加个[ ] 隔起来的列表也可以?
那么  跟 EXTEND()   区别又是什么勒 ?
最佳答案
2020-7-4 06:24:19
本帖最后由 Twilight6 于 2020-7-4 06:33 编辑




结果跑 idle 不出答案, 无解。   不太明白逻辑有何不同?


逻辑并没错误,这里是因为你的语法错误导致的,Python 没有这种连续这样用 if 的语法,而且感叹号移到括号外,移动完后输出结果完全相同

错误 :(if y%2 !)= 0 ,改成这样 (y%2 != 0)即可

  1. list1 = []
  2. for x in range(10):
  3.     for y in range(10):
  4.         if (x%2 == 0) and  (if y%2 != 0):
  5.                 list1.append((x, y))
复制代码


append()  课上讲,只能加一个元素,   然后 这里加个括号又可以两个变量了?那么我 加个括号放N多个逗号隔开变量,或者干脆加个[ ] 隔起来的列表也可以?


(x,y) 这是一个元组,算一个元素,不算两个;只要你是容器类型的值,在同一容器中,容器内的元素个数是相对容器而言的,而对于整个容器来是,这个容器就算一个元素

举个例子:
  1. >>> temp = [1]
  2. >>> temp.append([1,2,3,4,5])
  3. >>> print(temp)
  4. [1,[1,2,3,4,5]]
  5. >>>print(len(temp))
  6. 2
复制代码


[1,2,3,4,5] 列表容器内有 5 个元素,而 假设 temp = [1] ,temp.append([1,2,3,4,5]) 这就算将这个 [1,2,3,4,5] 整个列表添加到 temp中

使得 temp=[1 , [1,2,3,4,5]]  这个时候你对 temp 使用 len(temp) 会发现只返回 2 ,说明 temp 的元素个数就只有2个 ,而且这个元素我们知道一个是整型元素 1,还有个列表元素 [1,2,3,4,5]

那么  跟 extend()   区别又是什么勒 ?


extend() 是用来合并两个列表的,在举个刚刚的例子:

  1. >>> temp = [1]
  2. >>> temp.extend([1,2,3,4,5])
  3. [1,1,2,3,4,5]  # 合并了两个列表,而不是将 列表添加到另一个列表中
复制代码


这里 extend 使得 [1] 与 [1,2,3,4,5] 列表合并成为 [1,1,2,3,4,5]





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

使用道具 举报

发表于 2020-7-4 06:24:19 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-7-4 06:33 编辑




结果跑 idle 不出答案, 无解。   不太明白逻辑有何不同?


逻辑并没错误,这里是因为你的语法错误导致的,Python 没有这种连续这样用 if 的语法,而且感叹号移到括号外,移动完后输出结果完全相同

错误 :(if y%2 !)= 0 ,改成这样 (y%2 != 0)即可

  1. list1 = []
  2. for x in range(10):
  3.     for y in range(10):
  4.         if (x%2 == 0) and  (if y%2 != 0):
  5.                 list1.append((x, y))
复制代码


append()  课上讲,只能加一个元素,   然后 这里加个括号又可以两个变量了?那么我 加个括号放N多个逗号隔开变量,或者干脆加个[ ] 隔起来的列表也可以?


(x,y) 这是一个元组,算一个元素,不算两个;只要你是容器类型的值,在同一容器中,容器内的元素个数是相对容器而言的,而对于整个容器来是,这个容器就算一个元素

举个例子:
  1. >>> temp = [1]
  2. >>> temp.append([1,2,3,4,5])
  3. >>> print(temp)
  4. [1,[1,2,3,4,5]]
  5. >>>print(len(temp))
  6. 2
复制代码


[1,2,3,4,5] 列表容器内有 5 个元素,而 假设 temp = [1] ,temp.append([1,2,3,4,5]) 这就算将这个 [1,2,3,4,5] 整个列表添加到 temp中

使得 temp=[1 , [1,2,3,4,5]]  这个时候你对 temp 使用 len(temp) 会发现只返回 2 ,说明 temp 的元素个数就只有2个 ,而且这个元素我们知道一个是整型元素 1,还有个列表元素 [1,2,3,4,5]

那么  跟 extend()   区别又是什么勒 ?


extend() 是用来合并两个列表的,在举个刚刚的例子:

  1. >>> temp = [1]
  2. >>> temp.extend([1,2,3,4,5])
  3. [1,1,2,3,4,5]  # 合并了两个列表,而不是将 列表添加到另一个列表中
复制代码


这里 extend 使得 [1] 与 [1,2,3,4,5] 列表合并成为 [1,1,2,3,4,5]





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

使用道具 举报

发表于 2020-7-4 09:24:17 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-5 15:56:50 | 显示全部楼层
有没有Python·  练习册啊, 我现在需要大量的刷题啊,  括号部分是誊写错了, if  那个错误明显缺乏练习,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-5 20:10:47 | 显示全部楼层
Twilight6 发表于 2020-7-4 06:24
逻辑并没错误,这里是因为你的语法错误导致的,Python 没有这种连续这样用 if 的语法,而且感叹 ...

你太厉害了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-5 20:11:24 | 显示全部楼层
Twilight6 发表于 2020-7-4 06:24
逻辑并没错误,这里是因为你的语法错误导致的,Python 没有这种连续这样用 if 的语法,而且感叹 ...

上次一个难题就是你帮助我的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-5 21:03:56 | 显示全部楼层

谢谢~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 17:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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