鱼C论坛

 找回密码
 立即注册
查看: 921|回复: 4

python学习过程中的问题

[复制链接]
发表于 2018-6-13 20:59:22 | 显示全部楼层 |阅读模式

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

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

x
第12讲 第6题活学活用
>>> list1 = ['1.Jost 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]]
>>> list3
['1.耐克:Jost do it', '2.李宁:一切皆有可能', '3.鱼C工作室:让编程改变世界', '4.阿迪达斯:Impossible is Nothing']



请问一下 list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]] 这一个列表推导式如何解析完全理解不了呢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-13 22:26:42 | 显示全部楼层
本帖最后由 archlzy 于 2018-6-13 22:28 编辑

首先说我是菜逼 最近新学
我觉得大概是那一条是这样的

list1 = ['1.Jost do it', '2.一切皆有可能', '3.让编程改变世界', '4.Impossible is Nothing']
list2 = ['4.阿迪达斯', '2.李宁', '3.鱼C工作室', '1.耐克']

list3 = []
for slogan in list1:
    for name in list2:
        if slogan[0] == name[0]:
            list3.insert(0,name+"0"+slogan[2:])
print(list3)

但是我这样的结果是 ['4.阿迪达斯0Impossible is Nothing', '3.鱼C工作室0让编程改变世界', '2.李宁0一切皆有可能', '1.耐克0Jost do it'] 反过来的 这点不太懂。 for 到底先执行那一条的依据不太懂

ps 你这个在哪里看的 我咋地没看见

我把两条 for 换了 然后就好使了 和 你写的一样了 跪求大腿解释~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-13 22:33:37 | 显示全部楼层
archlzy 发表于 2018-6-13 22:26
首先说我是菜逼 最近新学
我觉得大概是那一条是这样的

因为是insert(0, xxxxx), 就是每次那个新的都是插入在了第一个位置,上面那个是相当于在最后插入,所以是倒过来的,ermm...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-14 09:16:17 | 显示全部楼层
hi 列表推导式list3,知识点可以分解为: 循环、分支、列表基础知识。将相关代码按循环+分支重新编写如下,请参考

  1. list1 = ['1.just do it','2,一切皆有可能','3.让编程改变世界']
  2. list2 = ['2.lining','3.fishc','1.nike']
  3. list3 = []

  4. for i in list1:
  5.     for j in list2:
  6.         if i[0] == j[0]: #比较list1、list2 元素中的第一个字符
  7.             list3.append(j + ':' + i[2:])#若相同,按格式写入

  8. print(list3)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-6-14 12:10:51 | 显示全部楼层
list1 = ['1.Jost do it', '2.一切皆有可能', '3.让编程改变世界', '4.Impossible is Nothing']
list2 = ['4.阿迪达斯', '2.李宁', '3.鱼C工作室', '1.耐克']

list3 = []
for slogan in list1:
    for name in list2:
        if slogan[0] == name[0]:
            list3.insert(0,name+"0"+slogan[2:])
print(list3)
你这段代码 是先将for name in list2这一条全部循环完后才进入for slogan in list1 下一轮循环.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 23:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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