鱼C论坛

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

小甲鱼第012讲第六题

[复制链接]
发表于 2016-2-29 22:59:40 | 显示全部楼层 |阅读模式
5鱼币
list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
这个无法理解啊!!!!


我的答案是:

list3=[[list1[x],':',list2[x]] for x in range(len(list1))]

但是还是错误的

题目

题目

最佳答案

查看完整内容

这个列表推导式可以分解成多个语句,相当于: 也就是进行2重循环,共4*4=16次,其中slogan[0]和name[0]都是指的数字,在数字相同时增加列表list3的内容name,":"和slogan的第三个字符至结尾字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-2-29 22:59:41 | 显示全部楼层
这个列表推导式可以分解成多个语句,相当于:
  1. list3 = []
  2. for slogan in list1:
  3.     for name in list2:
  4.         if slogan[0] == name[0]:
  5.             list3.append(name + ':' + slogan[2:])
复制代码

也就是进行2重循环,共4*4=16次,其中slogan[0]和name[0]都是指的数字,在数字相同时增加列表list3的内容name,":"和slogan的第三个字符至结尾字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-1 08:43:37 | 显示全部楼层
for slogan in list1 for name in list2 if slogan[0] == name[0]
将list1和list2中分别取一个值,如果slogan[0] == name[0]就返回这两个值并赋值给slogan和name
slogan[0] == name[0]就是取得到的字符串的第0个元素,也就是比较序号
slogan[2:]是字符串的分片操作[a:b]  a为起始位置默认为0,b为结束位置默认为len(str1)-1
所以slogan[2:]就是从第二号元素开始一直到最后
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-1 08:50:46 | 显示全部楼层
你的答案的问题是,首先你的返回值有问题,[list1[x],':',list2[x]]你这个返回的就是一个小列表,这个列表里面三个元素,list1[x]   ':'     list2[x]  然后一堆这样的小列表又组成了一个大列表

然后你这个列表推导式也没有判断,程序运行的时候开始x=0,然后你就直接把list1[0],':',list2[0]返回了,但是给的列表里面元素并不是一一对应的,所以你还得加判断让相同“号”的元素一起返回
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-3-1 20:27:20 | 显示全部楼层
冬雪雪冬 发表于 2016-3-1 09:00
这个列表推导式可以分解成多个语句,相当于:

也就是进行2重循环,共4*4=16次,其中slogan[0]和name[0] ...

slogan[2:]  为什么这个要切片,而且是从2开始
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-1 20:54:38 | 显示全部楼层
冷钟天 发表于 2016-3-1 20:27
slogan[2:]  为什么这个要切片,而且是从2开始

如果不切片就会显示成:1.耐克:1.Just do it;
从2开始是因为不取<1.Just do it>里的“1.”

评分

参与人数 2荣誉 +5 鱼币 +10 收起 理由
海上灯 + 5 + 5 自己跑了一下程序,说的是对的。如果slogan.
冷钟天 + 5 谢谢了。

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-3-1 21:11:45 | 显示全部楼层
shuofxz 发表于 2016-3-1 08:50
你的答案的问题是,首先你的返回值有问题,,':',list2[x]]你这个返回的就是一个小列表,这个列表里面三个元 ...

是哦,我都没注意到他顺序也不同。。。谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-22 16:22:58 | 显示全部楼层
冬雪雪冬 发表于 2016-2-29 22:59
这个列表推导式可以分解成多个语句,相当于:

也就是进行2重循环,共4*4=16次,其中slogan[0]和name[0] ...

厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-10-26 00:40:28 | 显示全部楼层
安以陌 发表于 2016-3-1 20:54
如果不切片就会显示成:1.耐克:1.Just do it;
从2开始是因为不取里的“1.”

感谢,被卡在这了,看了之后突然明白了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-10-26 08:09:55 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-27 12:24:47 | 显示全部楼层
安以陌 发表于 2016-3-1 20:54
如果不切片就会显示成:1.耐克:1.Just do it;
从2开始是因为不取里的“1.”

感谢提示,我自己跑了一下程序,说的是对的。
附: 如果取slogan[1:],会出现 :1.耐克:.Just do it
      
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-24 23:35:12 | 显示全部楼层
剛看答案也是不大了解
感謝各版主的解釋,以及各魚油的討論
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 14:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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