鱼C论坛

 找回密码
 立即注册
查看: 1347|回复: 10

[已解决]第十二讲的最后一题不懂

[复制链接]
发表于 2018-1-21 22:08:07 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
>>> list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]

看不懂这些代码在干嘛,之前没有slogan变量啊,而且似乎没换行,看起来挺乱
最佳答案
2018-1-22 11:14:19
首先明白列表表达式,举个例子
  1. >>> a = [x for x in range(10)]
  2. >>> a
  3. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
复制代码

可以看到x也并没有定义,就如slogan一样,这是列表表达式的基本用法

有了这个基础,再来分析这句
list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
首先,是生产一个列表,每个元素是for前面的内容,也就是name + ':' + slogan[2:]
每个元素满足以下要求:
  1. >>> for slogan in list1:
  2.             for name in liset2:
  3.                 if slogan[0] == name[0]:#字符串支持下标索引
  4.                #将该元素添加到list3中
  5.                        list3.append(name + ':' + slogan[2:])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-21 22:30:43 | 显示全部楼层
没听课吧。列表推导式

分开来看就
  1. list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]


  2. list4 = []
  3. for slogan in list1:
  4.         for name in list2:
  5.                 if slogan[0] == name[0]:
  6.                         list4.append(name + ':' + slogan[2:])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-22 07:37:35 From FishC Mobile | 显示全部楼层
ba21 发表于 2018-1-21 22:30
没听课吧。列表推导式

分开来看就

听课了,还是看不懂,这个式子在说什么啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-22 07:41:06 From FishC Mobile | 显示全部楼层
ba21 发表于 2018-1-21 22:30
没听课吧。列表推导式

分开来看就

之前没写name变量啊,slogan[2:]是什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-22 08:56:34 From FishC Mobile | 显示全部楼层
ba21 发表于 2018-1-21 22:30
没听课吧。列表推导式

分开来看就

看得半懂了,但是不明白为啥slogan[2:]可以表示第三个字母到最后还有slogan[0]等于list1第一个变量的第一个字母
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-22 09:17:54 From FishC Mobile | 显示全部楼层
来个人帮帮我啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-22 09:56:35 From FishC Mobile | 显示全部楼层
顶起
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-1-22 10:31:10 From FishC Mobile | 显示全部楼层
为什么没人回答我的问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-22 10:40:56 From FishC Mobile | 显示全部楼层
ba21 发表于 2018-1-21 22:30
没听课吧。列表推导式

分开来看就

slogan[2:]不是指从第三个变量到最后一个吗,还有slogan[0]不是意思是slogan里的第一个变量吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-22 11:14:19 | 显示全部楼层    本楼为最佳答案   
首先明白列表表达式,举个例子
  1. >>> a = [x for x in range(10)]
  2. >>> a
  3. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
复制代码

可以看到x也并没有定义,就如slogan一样,这是列表表达式的基本用法

有了这个基础,再来分析这句
list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
首先,是生产一个列表,每个元素是for前面的内容,也就是name + ':' + slogan[2:]
每个元素满足以下要求:
  1. >>> for slogan in list1:
  2.             for name in liset2:
  3.                 if slogan[0] == name[0]:#字符串支持下标索引
  4.                #将该元素添加到list3中
  5.                        list3.append(name + ':' + slogan[2:])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-1 21:40:44 | 显示全部楼层
phantastar 发表于 2018-1-22 10:40
slogan[2:]不是指从第三个变量到最后一个吗,还有slogan[0]不是意思是slogan里的第一个变量吗?

刚刚看懂,slogan[2:]的意思是:从slogan这个元素的第3个字符到最后一个。比如slogan='  1.just do it ' ,那么slogan[2:]=' just do it ' ,just中的‘ j ’就是slogan中的第三个字符,所以从‘ j ’开始到最后一个。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 08:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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