鱼C论坛

 找回密码
 立即注册
查看: 2411|回复: 13

新人表示有些没注释不是很懂啊。(第十二讲)

[复制链接]
发表于 2013-12-22 14:08:21 | 显示全部楼层 |阅读模式

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

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

x
  • >>> list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]
  • 在这里IF起什么作用?当IF为真时会如何判断?(不知道我的意思表达清楚没有。。。)主要想问这里为什么要这么写,为什么要用到IF。
  • list1 = []
  • for x in ragne(10):
  •     for y in range(10):
  •         if x%2 == 0:
  •             if y%2 != 0:
  •                 list1.append((x, y))
  • 为什么这里的每个都要缩进,并没有判断什么啊?不缩进有关系吗?

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

使用道具 举报

发表于 2013-12-22 17:31:03 | 显示全部楼层
list1 = []
for x in ragne(10):
    for y in range(10):
        if x%2 == 0:
            if y%2 != 0:
                list1.append((x, y))
只有x%2==0为真且y%2!=0为真才会执行list1.append((x, y)),这是条件分支嵌套演示。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-22 17:36:03 | 显示全部楼层

事实上列表推导式就是按照一定的规律转换嵌套的条件分支和循环分支,看以下例题再感受下吧:

列表推导式(List comprehensions)也叫列表解析,灵感取自函数式编程语言 Haskell。Ta 是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如:

[有关A的表达式 for A in B]

例如

>>> list1 = [x**2 for x in range(10)]
>>> list1
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

相当于

list1 = []
for x in range(10):
    list1.append(x**2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-22 18:21:07 | 显示全部楼层
学习学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-22 20:31:43 | 显示全部楼层
长知识了:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-23 14:09:04 | 显示全部楼层
小甲鱼 发表于 2013-12-22 17:31
只有x%2==0为真且y%2!=0为真才会执行list1.append((x, y)),这是条件分支嵌套演示。

for name in list1:
        for slogan in list2:
                print(name + ':' + slogan)
按照我的理解代码写成了这样。。。。为什么会重复输出4次,并且两个列表的数字都在。(如果我没表达明白请运行一下我的代码,Thank you )
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-24 15:19:18 | 显示全部楼层
a6564861 发表于 2013-12-23 14:09
for name in list1:
        for slogan in list2:
                print(name + ':' + slogan)

麻烦提供完整代码,thank you.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-24 16:55:35 | 显示全部楼层
list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','impossible is nothing']
list2 = ['1.耐克','2.李宁','3.鱼C工作室','4.阿迪达斯']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-24 17:03:58 | 显示全部楼层
小甲鱼 发表于 2013-12-24 15:19
麻烦提供完整代码,thank you.

list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','impossible is nothing']
list2 = ['1.耐克','2.李宁','3.鱼C工作室','4.阿迪达斯']
for name in list1:
        for slogan in list2:
                print(name + ':' + slogan)
这么写为什么不对呢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-25 10:58:49 | 显示全部楼层
a6564861 发表于 2013-12-24 17:03
list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','impossible is nothing']
list2 = ['1. ...

因为你这写成了嵌套的循环啦,也就是外部循环每跑一次,都会执行内部循环所有的内容,按照题目的要求,你只是少写了一个if条件判断。

应该写成:
>>> for name in list1:
        for slogan in list2:
                if slogan[0] == name[0]:
                        print(name + ' : ' + slogan)

                        
1.just do it : 1.耐克
2.一切皆有可能 : 2.李宁
3.让编程改变世界 : 3.鱼C工作室
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-25 11:49:56 | 显示全部楼层
小甲鱼 发表于 2013-12-25 10:58
因为你这写成了嵌套的循环啦,也就是外部循环每跑一次,都会执行内部循环所有的内容,按照题目的要求,你 ...

额。。我还是没理解啊。For x in y这个语句的意思是不是把Y的每个值都给X,并且分别打印出来?。而且如果外部循环每跑一次,就执行内部循环所有内容,不是应该很乱吗。为什么相同的数字还是在一起的。
我觉得不是应该是这样吗
     (1.just do it
       1.耐克
       2.李宁
       3.鱼C工作室
       2.一切皆有可能
       1.耐克
       2.李宁
       3.鱼C工作室
     。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-25 14:04:21 | 显示全部楼层
a6564861 发表于 2013-12-25 11:49
额。。我还是没理解啊。For x in y这个语句的意思是不是把Y的每个值都给X,并且分别打印出来?。而且如果 ...

按照你这个代码的执行,我给你做了下注释你看下:
>>> list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','impossible is nothing']
>>> list2 = ['1.耐克','2.李宁','3.鱼C工作室','4.阿迪达斯']
>>> for name in list1:
        for slogan in list2:
                print(name + ':' + slogan)

                
1.just do it:1.耐克                                   # 外部循环1 : 内部循环1
1.just do it:2.李宁                                   # 外部循环1 : 内部循环2 
1.just do it:3.鱼C工作室                          # 外部循环1 : 内部循环3 
1.just do it:4.阿迪达斯                            # 外部循环1 : 内部循环4 
2.一切皆有可能:1.耐克                             # 外部循环2 : 内部循环1 
2.一切皆有可能:2.李宁                             # 外部循环2 : 内部循环2 
2.一切皆有可能:3.鱼C工作室                    # 外部循环2 : 内部循环3
2.一切皆有可能:4.阿迪达斯
3.让编程改变世界:1.耐克
3.让编程改变世界:2.李宁
3.让编程改变世界:3.鱼C工作室
3.让编程改变世界:4.阿迪达斯
impossible is nothing:1.耐克
impossible is nothing:2.李宁
impossible is nothing:3.鱼C工作室
impossible is nothing:4.阿迪达斯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-25 14:05:54 | 显示全部楼层
小甲鱼 发表于 2013-12-25 14:04
按照你这个代码的执行,我给你做了下注释你看下:

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

使用道具 举报

发表于 2015-7-26 16:26:31 | 显示全部楼层
我来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-14 11:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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