鱼C论坛

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

关于python第十二讲的课后习题第6题的问题

[复制链接]
发表于 2016-1-9 07:08:17 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 zyandyz003 于 2016-1-9 08:22 编辑

就是这个第六题,怎么想都想不出来。
这个列表推导式怎么用呢?求大神指导。


list1 = ['1.Just do It','2.一切皆有可能','3.让变成改变世界','4.Impossible is Nothing']
list2 = ['4.阿迪达斯','2.李宁','3.鱼C工作室','1.耐克']
list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
for each in list3:
    print(each)

以上是正确答案


我推导出来是
for slogan in list1:
    for name in list2:
        if slogan[0] == name[0]:
            list3 = [name + ':' + slogan[2:]]

可是为什么 只显示了 一条信息。

还有这里     if slogan[0] == name[0]:      不是很明白



求指导!求指导!求大神带我飞!
044035qddrqkmrqod4cqmr.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-1-9 08:01:15 | 显示全部楼层
  if slogan[0] == name[0]:     是指两个个字符串的第一位相等,也就是数字相等时才符合条件

评分

参与人数 2荣誉 +5 鱼币 +6 收起 理由
冬雪雪冬 + 5 + 5
zyandyz003 + 1 支持楼主!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-1-9 08:04:26 | 显示全部楼层
lingtingliushen 发表于 2016-1-9 08:01
if slogan[0] == name[0]:     是指两个个字符串的第一位相等,也就是数字相等时才符合条件

呐,了解了,那,那个列表推导式,如果推回来是什么样的呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-9 11:32:11 | 显示全部楼层
zyandyz003 发表于 2016-1-9 08:04
呐,了解了,那,那个列表推导式,如果推回来是什么样的呢?

你的代码相当于每次for循环都重新复写了一次列表,正确的方式是append
  1. list1 = ['1.Just do It', '2.一切皆有可能', '3.让编程改变世界', '4.Impossible is Nothing']
  2. list2 = ['4.阿迪达斯', '2.李宁', '3.鱼C工作室', '1.耐克']
  3. list3 = [
  4.     name + slogan[2:] \
  5.     for slogan in list1 \
  6.     for name in list2 \
  7.     if name[0] == slogan[0] \
  8.     ]

  9. print(list3)

  10. list4 = []

  11. for slogan in list1:
  12.     for name in list2:
  13.         if name[0] == slogan[0]:
  14.             list4.append(name + slogan[2:])

  15. print(list4)
复制代码

评分

参与人数 2荣誉 +5 鱼币 +7 收起 理由
冬雪雪冬 + 5 + 5 热爱鱼C^_^
zyandyz003 + 2 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-1-9 19:21:52 | 显示全部楼层
hldh214 发表于 2016-1-9 11:32
你的代码相当于每次for循环都重新复写了一次列表,正确的方式是append

嗯嗯,懂了,最后那一点
  1. list4.append(name + slogan[2:])
复制代码


这里面,最后为什么要用【2:】呢??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-9 20:07:02 | 显示全部楼层
hldh214 发表于 2016-1-9 11:32
你的代码相当于每次for循环都重新复写了一次列表,正确的方式是append

已经懂了。谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-9 22:22:13 | 显示全部楼层
zyandyz003 发表于 2016-1-9 19:21
嗯嗯,懂了,最后那一点

这里面,最后为什么要用【2:】呢??

[2:]是从第三位开始到最后取值,例如“2.一切皆有可能”,[2:]就是取“一切皆有可能”

评分

参与人数 1鱼币 +1 收起 理由
zyandyz003 + 1 支持楼主!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-10 00:23:46 | 显示全部楼层
lingtingliushen 发表于 2016-1-9 22:22
[2:]是从第三位开始到最后取值,例如“2.一切皆有可能”,[2:]就是取“一切皆有可能”

嗯呐,多谢啦~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-19 04:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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