鱼C论坛

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

[已解决]笔记中的困惑

[复制链接]
发表于 2017-6-4 16:17:10 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 山沟流水 于 2017-6-4 16:17 编辑

昨天看来别人分享笔记,里面有这么一道题:
大概意思是:把list1和list2按照对应的口号输出,形式是这样: I)M8LSES3%NUM3I[~AQGWDT.png


答案是这样的
list1=['1.just do it','2.一切皆有可能','3.让编程改变世界']
list2=['3.鱼C工作室','1.耐克','2.李宁']
list3=[name+':'+slogan[2:]for slogan in list1 for name in list2 if name[0]==slogan[0]]
for each in list3:
        print(each)


问题:list3语句不清楚该怎么理解?里面是两个for循环吗?
最佳答案
2017-6-4 18:26:03
  1. [name+':'+slogan[2:] for slogan in list1 for name in list2 if name[0]==slogan[0]]
复制代码

这个表达式可以拆成两部分看

第一部分:是输出结果的样式
  1. name+':'+slogan[2:]
复制代码


第二部分:是“内容提供器”
  1. for slogan in list1 for name in list2 if name[0]==slogan[0]
复制代码


把这个写开了是下面这样的
  1. list3 = []
  2. for slogan in list1:
  3.     for name in list2:
  4.         if name[0]==slogan[0]:
  5.             list3.append(name+':'+slogan[2:])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-6-4 17:47:32 | 显示全部楼层
这个是列表推导式, name+‘:’+slogan 表示列表的元素
for slogan in list1 for name in list2 表示 从list1 和list2中迭代元素 ,
if name[0]  = slogan[0]  要求迭代出的元素 第一个字符相同。
综合起来就是 从list1 和list2 中迭代元素 ,如果两个元素的第一个字符串相同,那么这两个元素
就按照 name + ‘:’ +slogan 的规则组合成一个新元素 并添加到list3中

建议楼主看一看小甲鱼教程中的列表推导式视频,就明白了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-4 18:26:03 | 显示全部楼层    本楼为最佳答案   
  1. [name+':'+slogan[2:] for slogan in list1 for name in list2 if name[0]==slogan[0]]
复制代码

这个表达式可以拆成两部分看

第一部分:是输出结果的样式
  1. name+':'+slogan[2:]
复制代码


第二部分:是“内容提供器”
  1. for slogan in list1 for name in list2 if name[0]==slogan[0]
复制代码


把这个写开了是下面这样的
  1. list3 = []
  2. for slogan in list1:
  3.     for name in list2:
  4.         if name[0]==slogan[0]:
  5.             list3.append(name+':'+slogan[2:])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-4 20:49:25 | 显示全部楼层
shuofxz 发表于 2017-6-4 18:26
这个表达式可以拆成两部分看

第一部分:是输出结果的样式

这么写就懂了,谢谢谢谢
才知道列表里还可以那么操作
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-4 21:14:28 | 显示全部楼层
yongxi 发表于 2017-6-4 17:47
这个是列表推导式, name+‘:’+slogan 表示列表的元素
for slogan in list1 for name in list2 表示 从 ...

第12讲里没有讲述列表推导式啊,请问这个内容是在那一讲里面
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-4 21:37:36 | 显示全部楼层
山沟流水 发表于 2017-6-4 21:14
第12讲里没有讲述列表推导式啊,请问这个内容是在那一讲里面


忘记是哪一课了。。  你慢慢学, 总会看到的

不仅仅是列表。  推导式可以用在字典,元祖 等等数据容器里面
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-4 21:38:09 | 显示全部楼层
只想要多点鱼币 然后看看这些代码 加深学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-27 21:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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