鱼C论坛

 找回密码
 立即注册
查看: 2139|回复: 6

[已解决]Python教程12讲 课后作业列表相关的问题?

[复制链接]
发表于 2020-7-12 19:50:39 | 显示全部楼层 |阅读模式

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

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

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)

输出:
1.耐克:Just 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]] 这句中
slogan[]是把list2中的每一项 (如4.阿迪达斯)
划分(slice)成了slogan[0]=4   slogan[1]=.   slogan[2]=阿迪达斯吗

slogan[2: ]不是对列表的操作吗
这里list2中的每一个项都可以作为一个单独的列表,对其进行列表的操作吗?

那为什么 阿迪达斯 四个字被作为了一个整体呀?

初学者有点混乱,求大佬解释!
最佳答案
2020-7-12 20:10:18
本帖最后由 Twilight6 于 2020-7-12 20:18 编辑




想问一下这个 list3 =[name +':'+slogan[2:] for slogan in list1 for name in list2 if slogan[0]== name[0]] 这句中
slogan[]是把list2中的每一项 (如4.阿迪达斯)
划分(slice)成了slogan[0]=4   slogan[1]=.   slogan[2]=阿迪达斯吗


前面两个每次,最后一个错了正确的是: slogan[2]=阿, slogan[3]=迪, slogan[3]=达 , slogan[4]=斯

列表索引操作是索引位置参数的,从 0 开始索引,而且是一个字符,一个字符,而不是一个整体而言的


slogan[2: ]不是对列表的操作吗?


这个是 slogan 是 for 循环从列表中取出的字符串,所以是字符串的切片操作,也就是表示从第 2 个位置参数开始,到最后一个字符串

所以结果就是实际上去掉字符串前面的  编号.  比如 1.耐克 就是去掉前面的 1. 字符,保留 耐克字符


这里list2中的每一个项都可以作为一个单独的列表,对其进行列表的操作吗?


list2 是个列表,而列表里面的元素全部都是字符串,字符串不能当成列表来看,字符串有字符串索引,列表有列表索引,用法都是差别不大的


那为什么 阿迪达斯 四个字被作为了一个整体呀?


就是字符串切片操作呀,只保留切片范围内的字符,比如 [2:] 就是指从第二个位置参数开始到字符串结尾结束,保留下这个范围的字符串



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-12 19:59:41 | 显示全部楼层
切片不仅可以用于列表,还可以用于字符串,每一个元素就是字符串的每一个字符,slogan[2:] 表示的是从  slogan 的第三个字符一直截取到末尾。如果 slogan 为 '1.Just do it',那么 slogan[2:] 就是 'Just do it' 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-12 20:07:15 | 显示全部楼层
1、你的理解是对的,(4.阿迪达斯)的下标是(4对应0),(.对应)1,(阿对应2),以此类推,
2、slice不仅可以在列表中作用,还可以在元组、字符串中作用,你这个是作用到了字符串上。
我也是小白,互相学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-12 20:09:15 | 显示全部楼层
生物必学编程 发表于 2020-7-12 20:07
1、你的理解是对的,(4.阿迪达斯)的下标是(4对应0),(.对应)1,(阿对应2),以此类推,
2、slice不仅可以在 ...

再补充,[:2]表示列出数据至第二位
[2:]表示列出第二位后(包含第二位)的数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-12 20:10:18 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-7-12 20:18 编辑




想问一下这个 list3 =[name +':'+slogan[2:] for slogan in list1 for name in list2 if slogan[0]== name[0]] 这句中
slogan[]是把list2中的每一项 (如4.阿迪达斯)
划分(slice)成了slogan[0]=4   slogan[1]=.   slogan[2]=阿迪达斯吗


前面两个每次,最后一个错了正确的是: slogan[2]=阿, slogan[3]=迪, slogan[3]=达 , slogan[4]=斯

列表索引操作是索引位置参数的,从 0 开始索引,而且是一个字符,一个字符,而不是一个整体而言的


slogan[2: ]不是对列表的操作吗?


这个是 slogan 是 for 循环从列表中取出的字符串,所以是字符串的切片操作,也就是表示从第 2 个位置参数开始,到最后一个字符串

所以结果就是实际上去掉字符串前面的  编号.  比如 1.耐克 就是去掉前面的 1. 字符,保留 耐克字符


这里list2中的每一个项都可以作为一个单独的列表,对其进行列表的操作吗?


list2 是个列表,而列表里面的元素全部都是字符串,字符串不能当成列表来看,字符串有字符串索引,列表有列表索引,用法都是差别不大的


那为什么 阿迪达斯 四个字被作为了一个整体呀?


就是字符串切片操作呀,只保留切片范围内的字符,比如 [2:] 就是指从第二个位置参数开始到字符串结尾结束,保留下这个范围的字符串



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

使用道具 举报

发表于 2020-7-12 20:12:02 | 显示全部楼层
生物必学编程 发表于 2020-7-12 20:07
1、你的理解是对的,(4.阿迪达斯)的下标是(4对应0),(.对应)1,(阿对应2),以此类推,
2、slice不仅可以在 ...

你的第一个问题没有认值看题,楼主把 slogan[2]等于了阿迪达斯 了,所以楼主的理解是错的,但是你解释的没错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-12 21:00:38 | 显示全部楼层
哇,谢谢各位大佬啦,没想到真的有人会很认真的帮忙解答诶,谢谢啦~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 11:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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