鱼C论坛

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

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

[复制链接]
发表于 2020-5-26 13:19:13 | 显示全部楼层 |阅读模式

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

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

x
list1 = ['a','b','c','d']
list2 = ['4','3','2','1']
list3 = [name + ':' + slogan [2:] for slogan in list1 for name in list2 if slogan[0] == name[0] ]
for each in list3:
    print(each)

什么都没打印出来,我试着把list3的东西改了,但也还是得不到老师的答案
最佳答案
2020-5-28 06:50:59
Vitacoco 发表于 2020-5-28 04:53
但是如果按照老师的'1.Jost do It', '4.阿迪达斯' 也是不成立的啊

你没理解这个程序是怎么运行的
slogan[0] == name[0]
这个是判断slogan 和 name 的第一个字符是否相等
你的代码是不可能相等的,一个是数字,一个是字母,老师的可以相等
list1=['1.just do it','2.一切皆有可能','3.编程改变世界','4. impossible is nothing']
list2=['4.阿迪达斯','2.李宁','3.工作室','1.耐克']
没发现老师的代码,两个列表前面的编号都是1~4吗?他们比较 [0] 是第一个字符,肯定有机会相等,而你的是不可能相等的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-26 13:23:17 | 显示全部楼层
你的数据本身就不对啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 13:25:24 | 显示全部楼层
因为你这个条件是不可能成立的:
if slogan[0] == name[0]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 13:26:45 | 显示全部楼层
正确的数据是
list1 = ['1.Jost do It', '2.一切皆有可能', '3.让编程改变世界', '4. Impossible is Nothing']
list2 = ['4.阿迪达斯', '2.李宁', '3.鱼C工作室', '1.耐克']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你的list1和list2中没有满足slogan[0] == name[0]条件的元素,而且slogan [2:]也会下标溢出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-28 04:52:52 | 显示全部楼层
sunrise085 发表于 2020-5-26 13:28
list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
将 ...

但是list 1 2里的东西不是可以自己随意改动的吗,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-28 04:53:56 | 显示全部楼层
Twilight6 发表于 2020-5-26 13:25
因为你这个条件是不可能成立的:

但是如果按照老师的'1.Jost do It', '4.阿迪达斯' 也是不成立的啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-28 06:50:59 | 显示全部楼层    本楼为最佳答案   
Vitacoco 发表于 2020-5-28 04:53
但是如果按照老师的'1.Jost do It', '4.阿迪达斯' 也是不成立的啊

你没理解这个程序是怎么运行的
slogan[0] == name[0]
这个是判断slogan 和 name 的第一个字符是否相等
你的代码是不可能相等的,一个是数字,一个是字母,老师的可以相等
list1=['1.just do it','2.一切皆有可能','3.编程改变世界','4. impossible is nothing']
list2=['4.阿迪达斯','2.李宁','3.工作室','1.耐克']
没发现老师的代码,两个列表前面的编号都是1~4吗?他们比较 [0] 是第一个字符,肯定有机会相等,而你的是不可能相等的
想知道小甲鱼最近在做啥?请访问 -> 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中没有任何内容。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-28 09:40:02 | 显示全部楼层
sunrise085 发表于 2020-5-28 08:33
可以改动,但不是随意改动。list1的元素的第一个字符若在list2的所有元素的第一个字符中找不到,那就不 ...

求教, 为什么用slogan[2:],这是什么意思??  这里是指从list1 中的 [2]开始查找的意思? 或者这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我知道什么意思   切片。 取 2开始后面的内容   。。 是因为“1.”“2.”是重复的
想知道小甲鱼最近在做啥?请访问 -> 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的第二个元素到最后一个元素。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 00:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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