鱼C论坛

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

[已解决]python12讲作业中的列表推导式

[复制链接]
发表于 2018-9-7 15:47:03 | 显示全部楼层 |阅读模式

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

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

x
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)
list3这个列表推导式的if那个条件表示什么意思呀  为什么执行结果能自动匹配好顺序
最佳答案
2018-9-7 15:52:44
slogan可以取list1的每个元素、
name可以取list2的每个元素
slogan和name都是字符串,
索引[0]表示第一个字符,
因此就是把list1和list2中起始字符相等,即数字开头相等name和slogan的拿来做新列表的每个元素
name + ':' + slogan[2:]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-7 15:52:44 | 显示全部楼层    本楼为最佳答案   
slogan可以取list1的每个元素、
name可以取list2的每个元素
slogan和name都是字符串,
索引[0]表示第一个字符,
因此就是把list1和list2中起始字符相等,即数字开头相等name和slogan的拿来做新列表的每个元素
name + ':' + slogan[2:]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-9-7 15:55:08 | 显示全部楼层
塔利班 发表于 2018-9-7 15:52
slogan可以取list1的每个元素、
name可以取list2的每个元素
slogan和name都是字符串,

哇,懂了懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-7 16:11:58 | 显示全部楼层
本帖最后由 geen 于 2018-9-7 16:13 编辑

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 slogan in list1:           把list1的每个值都迭代(循环)一遍,取名叫slogan,翻译:“标语,口号”
#    for name in list2:         把list2的每个值都迭代(循环)一遍,取名叫name,翻译:“名字”
#        if slogan[0] == name[0]:   如果“口号”的每一个值的第1个值(值为:1  2  3  4)  == “名字”的每一个值的第1个值(值为:4 2 3 1 )
#            list3 = [name + ':' + slogan[2:]     则执行: 把“名字”和“标语”拼接在一起,赋值给list3;
#                                                                          slogan[2:]:复制slogan,从第3个字符到末尾。
       
for each in list3:
    print(each)

评分

参与人数 1鱼币 +1 收起 理由
13572044595 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-9-13 14:32:49 | 显示全部楼层
geen 发表于 2018-9-7 16:11
list1=['1.just do it','2.一切皆有可能','3.让程序改变世界','4.impossible is nothing']

list2=['4.阿 ...

list1=['1.just do it','2.everthing is possible','3.program change the world','4.impossible is nothing']
list2=['4.adidas','2.lining','3.FishC','1.nike']
for slogan in list1:
    for name in list2:
        if slogan[0]==name[0]:
            list3=[name+':'+slogan[2:]]
            for each in list3:
                print(each)


#最后打印list3 那句必须在if 语句下面,不然打印不全。list3中的元素始终就存储一个,每次循环都被覆盖掉了。而这句 list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]是重新生成一个list3中包含了4个元素。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-7 04:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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