鱼C论坛

 找回密码
 立即注册
查看: 897|回复: 2

第12课后练习:第6题不懂

[复制链接]
发表于 2019-5-31 15:22:51 | 显示全部楼层 |阅读模式

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

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

x
list2=["1.jost do it", "2.一切皆有可能","3.让编程改变世界",\
       "4,Impassible is Nothing"]
list1=["4.案例大赛","2.李宁","3.云溪","1.耐克"]
list3=[name+":"+slogan[2:] for slogan in list2 \
       for name in  list1 if slogan[0]==name[0]]这里不懂
#print(list3)

运行结果:
1.耐克:jost do it
2.李宁:一切皆有可能
3.云溪:让编程改变世界
4.案例大赛:Impassible is Nothing
我想知道他是如何进行排列的按序须排列的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-5-31 15:36:33 | 显示全部楼层
for语句中声明了的slogan和name分别是两个列表list2和1的变量,在列表中它们每个变量中的数字序号排在第一位,分别用 slogan[0]和name[0]表示(小甲鱼强调过0是第一个序号),所以你仔细看原题,每个广告语和品牌前面的数字序号都是一一对应的, if slogan[0]==name[0]这个条件就能让他们排序了,之所以+slogan[2:]就是为了排除广告词里的数字序号和后面的“.”。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-31 17:17:38 | 显示全部楼层
本帖最后由 13572044595 于 2019-5-31 17:23 编辑

列表推导式写法:
  1. list3=[name+":"+slogan[2:] for slogan in list2 for name in  list1 if slogan[0]==name[0]]
复制代码


普通写法:
  1. list3=[]
  2. for slogan in list2:
  3.     for name in list1:
  4.         if slogan[0] == name[0]:
  5.             list3.append(name+':'+slogan[2:])
复制代码



[b]结果排序:
因为先访问的是 list2,所以结果会以 list2 的顺序排列,
你改变一下访问顺序,就知道了:      [/b]
  1. list2=["1.jost do it", "2.一切皆有可能","3.让编程改变世界","4,Impassible is Nothing"]
  2. list1=["4.案例大赛","2.李宁","3.云溪","1.耐克"]
  3. list3=[]
  4. for name in list1:
  5.     for slogan in list2:
  6.         if slogan[0] == name[0]:
  7.             list3.append(name+':'+slogan[2:])
  8.             
  9. for each in list3:
  10.     print(each)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-16 03:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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