鱼C论坛

 找回密码
 立即注册
查看: 835|回复: 11

[已解决]012讲零基础入门学习python的最后一个问题

[复制链接]
发表于 2018-11-25 14:32:22 | 显示全部楼层 |阅读模式

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

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

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)
其中的slogan[2:0]是什么意思  还有就是if判断条件不是很懂
这段没有输出结果,也没有报错
最佳答案
2018-11-25 15:23:58
if条件判断部分是列表推导式,这个是从左往右依次推导的过程,新手很不熟和看不懂很正常,当你多多熟练的时候就好了。
slogan[2:]是表示在第三个元素之后的所有元素。
列表推导式分解大概如下:
  1. list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','4.Impossible is nothing']
  2. list2 = ['4.阿迪达斯:','2.李宁:','3.鱼C工作室:','1.耐克:']
  3. list3 = []
  4. for slogan in list1:
  5.     for name in list2:
  6.         if slogan[0] == name[0]:     #判断前面的数字是否是一一对应的
  7.             list3.append(name + ':' + slogan[2:])  #slogan[2:]是除了前面数字之后的话

  8. for each in list3:
  9.     print(each)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-11-25 14:34:36 | 显示全部楼层
说错了  有输出结果,只是没懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-25 15:23:58 | 显示全部楼层    本楼为最佳答案   
if条件判断部分是列表推导式,这个是从左往右依次推导的过程,新手很不熟和看不懂很正常,当你多多熟练的时候就好了。
slogan[2:]是表示在第三个元素之后的所有元素。
列表推导式分解大概如下:
  1. list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','4.Impossible is nothing']
  2. list2 = ['4.阿迪达斯:','2.李宁:','3.鱼C工作室:','1.耐克:']
  3. list3 = []
  4. for slogan in list1:
  5.     for name in list2:
  6.         if slogan[0] == name[0]:     #判断前面的数字是否是一一对应的
  7.             list3.append(name + ':' + slogan[2:])  #slogan[2:]是除了前面数字之后的话

  8. for each in list3:
  9.     print(each)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-25 15:41:13 | 显示全部楼层
Thomason 发表于 2018-11-25 15:23
if条件判断部分是列表推导式,这个是从左往右依次推导的过程,新手很不熟和看不懂很正常,当你多多熟练的时 ...

作为小白,一直有一点没明白,
例如 for slogan in list1:
是不是把list1里的元素赋值给了sogan?
如果是那么sogan同时有4个值,这个怎么理解
如果不是,那么sogan是不是一个语句还是特指的变量名?
这点麻烦解释一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-25 15:51:52 | 显示全部楼层
zjy1122 发表于 2018-11-25 15:41
作为小白,一直有一点没明白,
例如 for slogan in list1:
是不是把list1里的元素赋值给了sogan?

for 循环是把list1中的其中一个元素赋值给了slogan。
比如第一次的时候就把第一个元素赋值给了slogan,然后进行下面的判断,如果循环结束,slogan自动失去赋值,再一次进入到for循环中赋值第二个,以此类推。
不是向您所说的同时把所有的值全部赋值给slogan
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-25 16:29:10 | 显示全部楼层
Thomason 发表于 2018-11-25 15:23
if条件判断部分是列表推导式,这个是从左往右依次推导的过程,新手很不熟和看不懂很正常,当你多多熟练的时 ...

不需要把list2里面的内容先排序再一一对应吗?因为输出结果是这样子的
1,耐克:just do it
2.李宁:一切皆有可能
3.鱼C工作室:让编程改变世界
4,阿迪达斯:Impossible is nothing
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-25 16:34:15 | 显示全部楼层
大黑狼 发表于 2018-11-25 16:29
不需要把list2里面的内容先排序再一一对应吗?因为输出结果是这样子的
1,耐克:just do it
2.李宁:一 ...

不需要排序啊,虽然for循环是按照顺序一步步来的,但是系统进行了每一个的匹配和判断,自然也就不需要再进行排序了。
假设它的slogan是'1.just do it',在这一次循环内部再一次循环,使list2中每一个元素都用if判断,直到对应或者没有对应,然后再进行下一个循环,slogan重新赋值为'2.一切皆有可能',以此类推
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-25 16:38:33 | 显示全部楼层
zjy1122 发表于 2018-11-25 15:41
作为小白,一直有一点没明白,
例如 for slogan in list1:
是不是把list1里的元素赋值给了sogan?

每一次for循环执行 都会重新给slogan赋值一次,相当于更新slogan  不是把list1的所有内容堆积在一起赋值给slogan
例如:
for i in range(3):  #for循环会被执行三次,给i赋值三次
    print('i=',i)

输出结果是
i=0
i=1
i=2

我们以最后的结果为准
所以最后 i=2
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-25 16:40:52 | 显示全部楼层
Thomason 发表于 2018-11-25 16:34
不需要排序啊,虽然for循环是按照顺序一步步来的,但是系统进行了每一个的匹配和判断,自然也就不需要再 ...

意思是相当于是系统会自动帮你找匹配的对象是吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-25 16:46:53 | 显示全部楼层
大黑狼 发表于 2018-11-25 16:40
意思是相当于是系统会自动帮你找匹配的对象是吧?

不不不不是系统,是你的if条件判断啊,Python才不会帮你找对象呢-_-
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-25 16:49:33 | 显示全部楼层
本帖最后由 Thomason 于 2018-11-25 16:54 编辑
大黑狼 发表于 2018-11-25 16:38
每一次for循环执行 都会重新给slogan赋值一次,相当于更新slogan  不是把list1的所有内容堆积在一起赋值 ...


对的,如果到后面或者循环外面再次使用i时就去最后的值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-25 23:41:46 | 显示全部楼层
Thomason 发表于 2018-11-25 16:46
不不不不是系统,是你的if条件判断啊,Python才不会帮你找对象呢-_-

哦哦哦,我懂啦,name[0]和另一个slogan[0]其中的0在if判断里面代表的是字符串里索引值为0的那个数字比较,就可以对应起来了,谢谢啦,这题出得真的妙。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-10 18:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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