鱼C论坛

 找回密码
 立即注册
查看: 1756|回复: 11

[已解决]作业第012讲列表:一个打了激素的数组3 第六题

[复制链接]
发表于 2020-5-26 13:28:10 | 显示全部楼层
list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
将这一句改为正常的循环结构如下:
  1. list3=[]
  2. for slogan in list1:
  3.     for name in list2:
  4.         if slogan[0] == name[0]:
  5.             list3.append(name + ':' + slogan[2:])
复制代码


你的list1和list2中没有满足slogan[0] == name[0]条件的元素,而且slogan [2:]也会下标溢出
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-28 08:33:07 | 显示全部楼层
Vitacoco 发表于 2020-5-28 04:52
但是list 1 2里的东西不是可以自己随意改动的吗,


可以改动,但不是随意改动。list1的元素的第一个字符若在list2的所有元素的第一个字符中找不到,那就不会执行if语句,也就不会有元素被添加到list3中。

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

这是一个迭代。slogan从list1中寻找,name从list2中寻找,若两个字符串的第一个字符一样,则进行前面的拼接,即name + ':' + slogan[2:]
举例说明:
当name='1.耐克'时,会从list2中找到slogan='1.just do it',因为只有这个元素符合条件slogan[0] == name[0],此时list3中对应的元素由这个语句构成name+':'+slogan[2:],即‘1.耐克’和':'和‘just do it’三个字符串拼接而成,也即‘1.耐克:just do it’,list3的其他元素类似。
而你给出的两个列表,当name为 'a' 时,根本不可能从list2中找到合适的元素slogan使得slogan[0] == name[0],所以也就不会执行if后面的语句了,结果就是list3中没有任何内容。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-28 11:56:22 | 显示全部楼层
bujust_h 发表于 2020-5-28 09:40
求教, 为什么用slogan[2:],这是什么意思??  这里是指从list1 中的 [2]开始查找的意思? 或者这个

此时list3中对应的元素由这个语句构成name+':'+slogan[2:],即‘1.耐克’和':'和‘just do it’三个字符串拼接而成,也即‘1.耐克:just do it’,

请认真看我在9楼写的回复。
slogan[2:]是切片。即slogan的第二个元素到最后一个元素。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-1 16:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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