鱼C论坛

 找回密码
 立即注册
查看: 2024|回复: 9

[已解决]为什么能实现这个目的呢 list3得列表推导式是什么情况?

[复制链接]
发表于 2020-3-22 10:45:51 | 显示全部楼层 |阅读模式

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

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

x
list1 = ['1.Just do It','2.一切皆有可能','3让编程改变世界,', '4.Impossing is NOT'  ]
list2 = ['4.阿迪达斯','2.李宁','3.鱼C工作室','1.耐克']
list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
最佳答案
2020-3-22 21:41:24
伊笑丶 发表于 2020-3-22 21:37
这个solgan 为什么能将序号和点给删掉啊  他不是函数吧  其余的我都明白  就差这个了  为啥这个东西能删 ...

直接举例子吧:
>>> a = "1.qiuyouzhi"
>>> a
'1.qiuyouzhi'
>>> # 整个字符串,这里我们要用列表切片
>>> a[:]
'1.qiuyouzhi'
>>> a[0:]
'1.qiuyouzhi'
>>> a[1:]
'.qiuyouzhi'
>>> a[2:]
'qiuyouzhi'
>>> # 就把序号去掉了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-22 10:49:44 | 显示全部楼层
https://fishc.com.cn/thread-158908-1-1.html
先看这个,给你分析一下代码:
name不多说了,就是第一个列表
slogan[2:]之所以要这样,是因为拼接在一起的内容只有文本,要是直接slogan就会把序号和小数点一起相加。
具体的判断方法:
遍历两个列表,先拎出来一个name,再拎出来一个slogan,如果序号相同就放在一起,不相同就下一个
总之,每次大循环都会成功配对一次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 11:14:03 | 显示全部楼层
        如果把列表推导式
list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
        展开是下面的样子:
list3 = []
for slogan in list1 :
    for name in list2 :
        if slogan[0] == name[0]:
            list3 . append(name + ':' + slogan[2:])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 11:30:20 | 显示全部楼层
qiuyouzhi 发表于 2020-3-22 10:49
https://fishc.com.cn/thread-158908-1-1.html
先看这个,给你分析一下代码:
name不多说了,就是第一个 ...

就为什么这个代码能拼接文本  数字和小数点为什么会不见了  还有就是 判断相等的那个条件 是数字1相等就相等? 但是这在列表中是不是字符串的形式存在的嘛 要想等 不是要全部一样对的嘛?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 11:31:34 | 显示全部楼层
伊笑丶 发表于 2020-3-22 11:30
就为什么这个代码能拼接文本  数字和小数点为什么会不见了  还有就是 判断相等的那个条件 是数字1相等就 ...

1,在最开始不是有一个name + slogan[2:]嘛,2:就是从字符串第二个字符开始,把前两个过滤掉
2,全部一样对怎么可能呢,本来就是一一对应,序号对他俩就是一起的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 11:31:44 | 显示全部楼层
给你看看之前大佬们的解答呀 给你整的明明白白

<font color="red">[已解决]</font>列表推导式不理解啊。
https://fishc.com.cn/thread-146643-1-1.html
(出处: 鱼C论坛)

<font color="red">[已解决]</font>012讲课后作业求助!!!
https://fishc.com.cn/thread-155966-1-1.html
(出处: 鱼C论坛)

然后 这是我自己的学习笔记呀 你感兴趣也可以看看

【朱迪的手写学习笔记 之 零基础入门学习Python】010-012
https://fishc.com.cn/thread-153834-1-1.html
(出处: 鱼C论坛)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 21:37:29 | 显示全部楼层
qiuyouzhi 发表于 2020-3-22 11:31
1,在最开始不是有一个name + slogan[2:]嘛,2:就是从字符串第二个字符开始,把前两个过滤掉
2,全部一 ...

这个solgan 为什么能将序号和点给删掉啊  他不是函数吧  其余的我都明白  就差这个了  为啥这个东西能删掉数字和点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 21:41:24 | 显示全部楼层    本楼为最佳答案   
伊笑丶 发表于 2020-3-22 21:37
这个solgan 为什么能将序号和点给删掉啊  他不是函数吧  其余的我都明白  就差这个了  为啥这个东西能删 ...

直接举例子吧:
>>> a = "1.qiuyouzhi"
>>> a
'1.qiuyouzhi'
>>> # 整个字符串,这里我们要用列表切片
>>> a[:]
'1.qiuyouzhi'
>>> a[0:]
'1.qiuyouzhi'
>>> a[1:]
'.qiuyouzhi'
>>> a[2:]
'qiuyouzhi'
>>> # 就把序号去掉了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 22:18:58 | 显示全部楼层

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

使用道具 举报

发表于 2021-1-30 12:14:32 | 显示全部楼层
本帖最后由 千霜碎岳 于 2021-1-30 12:27 编辑

我把print位置放错了,谢谢答复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 19:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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