QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

新鱼友

Rank: 1

积分
27
查看: 114|回复: 4

python学习过程中的问题

[复制链接]
最佳答案
0 

尚未签到

咸鱼馅的饺子 发表于 7 天前 1144 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

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]] 这一个列表推导式如何解析完全理解不了呢。
楼层
跳转到指定楼层
最佳答案
0 
累计签到:1 天
连续签到:1 天
archlzy 发表于 7 天前 | 显示全部楼层
本帖最后由 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 换了 然后就好使了 和 你写的一样了 跪求大腿解释~
最佳答案
1 
累计签到:13 天
连续签到:12 天
粉红猪小妹 发表于 7 天前 | 显示全部楼层
archlzy 发表于 2018-6-13 22:26
首先说我是菜逼 最近新学
我觉得大概是那一条是这样的

因为是insert(0, xxxxx), 就是每次那个新的都是插入在了第一个位置,上面那个是相当于在最后插入,所以是倒过来的,ermm...
最佳答案
160 
累计签到:357 天
连续签到:13 天
thexiosi 发表于 6 天前 | 显示全部楼层
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)
复制代码
最佳答案
0 
累计签到:73 天
连续签到:5 天
qixiaoting_123 发表于 6 天前 | 显示全部楼层
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 下一轮循环.

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.3 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-6-20 02:21

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