鱼C论坛

 找回密码
 立即注册
查看: 1207|回复: 7

[已解决]列表解析

[复制链接]
发表于 2018-3-1 07:05:25 | 显示全部楼层 |阅读模式

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

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

x
这道题的解析式是
>>> list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
我想请问slogan[0]应该是 1.jost do it   啊
name[0]应该[4.阿迪达斯]啊
name + : +slogan[2: ]应该是name[0] + ' : ' +slogan[2]才对吧,
这道题的正确解析是怎样的
最佳答案
2018-3-1 08:50:14
首先,答案等价于
list3=[]
for slogan in list1:
    for name in list2:
        if slogan[0] == name[0]:
            list3.append(name+':'+slogan[2:])

这里的solgan和name都是字符串,所以solgan[0]和name[0]都是是取第一个字符
而slogan[2:]是从第三个字符到结尾,比如
slogan == "1.耐克:Just do it"
那么slogan[2:] 就是"耐克:Just do it"
VIEBUGYF7H8G7NL68]E7$]3.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-1 08:18:29 | 显示全部楼层
如果name[0] + ' : ' +slogan[2]则
name[0] 为数字,先以1为例
slogan[2]为第三个字符,以J为例
最后得到的是:1:J
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-1 08:25:04 | 显示全部楼层
  1. list3=[name+':'+slogan[2:] for slogan in list1 for name in list2 if name[0]==slogan[0]]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-1 08:25:05 | 显示全部楼层
刚好我昨天也看到这一讲,说一下我的理解吧:
由for name in list2 可知,name是指list2中的元素,即分别是‘4.阿迪达斯’、‘2.李宁’、‘3.鱼C工作室’、‘1.耐克’四个元素,name[0]指的是每个元素中的第0个字符,比如name 取值为‘1.耐克’时,name[0]就是‘1’;同理,slogan是指list1中的元素,slogan取值为‘1.Just do it’时,slogan[0]就是第0个字符,即‘1’,slogan[2:]就是从第2个字符到最后一个,即‘Just do it’(第1个字符是标点‘.’)
所以当第一次执行if slogan[0] == name[0]时,slogan取值是‘1.Just do it’,因此只有name取‘1.耐克'才满足条件。由此第一次执行name+':'+slogan[2:]的结果就是‘1.耐克:Just do it’。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-1 08:26:04 | 显示全部楼层
slogan是  1.jost do it, 所以 slogan[0] 是 1,
name同理
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-1 08:50:14 | 显示全部楼层    本楼为最佳答案   
首先,答案等价于
list3=[]
for slogan in list1:
    for name in list2:
        if slogan[0] == name[0]:
            list3.append(name+':'+slogan[2:])

这里的solgan和name都是字符串,所以solgan[0]和name[0]都是是取第一个字符
而slogan[2:]是从第三个字符到结尾,比如
slogan == "1.耐克:Just do it"
那么slogan[2:] 就是"耐克:Just do it"
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-1 23:09:23 From FishC Mobile | 显示全部楼层
冬雪雪冬 发表于 2018-3-1 08:18
如果name[0] + ' : ' +slogan[2]则
name[0] 为数字,先以1为例
slogan[2]为第三个字符,以J为例

就是说先把他转成字符串形式这样让他们第一个数字相等然后在添加到字符串里是吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-2 07:25:38 From FishC Mobile | 显示全部楼层
for读出来的就是字符串
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-6 02:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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