teribsandy 发表于 2018-3-6 00:18:39

【求解列表推导式】【零基础python作业012讲】

list1=['1.just do it','2.一切皆有可能','3.编程改变世界','4. impossible is nothing']
list2=['4.阿迪达斯','2.李宁','3.工作室','1.耐克']
# list3不太理解怎么得来的
list3=for slogan in list1 for name in list2 if slogan==name]
for each in list3:
        print each


可以帮忙1⃣️解释一下list3的列表推导式吗?2⃣️还原这个列表推导式。谢谢🙏

ouyunfu 发表于 2018-3-6 00:35:33

#这个列表推导式可以拆解成这样,
list3=[]
for slogan in list1:
      for name in list2:
                if slogan==name:
                        list3.append(name + ':'+ slogan)

#其中slogan和name对应的是序号1,2,3,4。而slogan对应的是'just do it','一切皆有可能','编程改变世界','impossible is nothing'

大头目 发表于 2018-3-6 08:38:43

就是判断对应编号一致后,取list2的每个元素加上冒号再加上list1的对应元素去掉编号

Chase_Kas 发表于 2018-3-6 09:42:12

2楼回答得很正确,刚学完这一课来说说感受。
我当时做这题的时候一脸懵逼,该怎样匹配两者呢,当时有想到查找字符串的第一个字符用来匹配,但是不知道对应BIF是什么。
一看答案才发现:字符串后面加上[]是可以转换成列表类型的!我想这个就是正确匹配slogan和name的关键。

imchengxm 发表于 2018-3-6 16:04:50

看2楼的解释看两遍才看懂。第一遍看也是一脸懵逼。2楼的解释太完美了。

依然不屑 发表于 2018-9-27 10:30:43

没明白IF,后面不需要ELSE?

Python伍 发表于 2019-3-31 11:38:03

{:10_249:}{:10_269:}

Flouxetine 发表于 2019-6-24 23:45:13

{:10_266:}{:10_266:}

Flouxetine 发表于 2019-6-24 23:45:52

#其中slogan和name对应的是序号1,2,3,4。而slogan对应的是'just do it','一切皆有可能','编程改变世界','impossible is nothing'
能不能再解释下这两句,不懂啊

comeandthe 发表于 2019-7-1 03:42:57

Flouxetine 发表于 2019-6-24 23:45
#其中slogan和name对应的是序号1,2,3,4。而slogan对应的是'just do it','一切皆有可能','编程 ...

我刚也不懂,去练习了下有点理解了,你可以看下:
slogan和name都是相当于每次从list1/list2中取出每个元素的第1个元素。
slogan每次从list1中取出每个元素第2个以后的所有元素。

小p鱼41 发表于 2019-8-8 16:27:59

列表推导式形式:[ 打印形式 for in   for in   if ]

c870801 发表于 2019-8-14 11:31:54

Chase_Kas 发表于 2018-3-6 09:42
2楼回答得很正确,刚学完这一课来说说感受。
我当时做这题的时候一脸懵逼,该怎样匹配两者呢,当时有想到 ...

我也是有同感,真的需要多看几遍才能其义自现,多思考,勤上机实操,帮助确实大。另外注意条件的运用与多项表达式(是不是这么说也不确定)的写法。

皮皮卸 发表于 2019-9-12 09:51:43

ouyunfu 发表于 2018-3-6 00:35
#这个列表推导式可以拆解成这样,
list3=[]
for slogan in list1:


name + ':' + slogan      
slogan这个我还是理解不了,为什么是这个是什么作用呢?

漆蔓蔓 发表于 2019-9-24 11:58:30

皮皮卸 发表于 2019-9-12 09:51
name + ':' + slogan      
slogan这个我还是理解不了,为什么是这个是什么作用呢?

提取列表中从第二个开始一直都结束的所有元素。看一下小甲鱼的视频,里面有list那里,是提取第1到第3个元素。如果省略前面【:3】就是提取第0个到第三个。从左往右取,不包括第三个,【1:】就是从第一个到最后,包括第一个元素

黎明前的灰暗 发表于 2020-2-2 18:08:34

没学好{:10_266:} 到此一游
个人认为最佳答案#后面描述错误,name + ':' + slogan中 的 去掉1. 或 2. 等等



Yoru 发表于 2020-3-12 01:22:17

感觉变秃不是梦了{:10_266:}

liuzg123 发表于 2020-5-7 09:39:15

ouyunfu 发表于 2018-3-6 00:35
#这个列表推导式可以拆解成这样,
list3=[]
for slogan in list1:


slogan[:2]中间的2为什么不是1呢

明日小秃驴 发表于 2020-8-6 17:56:07

ouyunfu 发表于 2018-3-6 00:35
#这个列表推导式可以拆解成这样,
list3=[]
for slogan in list1:


大佬大佬,我这个还是不太懂啊,已经看了好几遍了。
第一个问题就是如果slogan从第三个开始取值的话,获得的是‘3.让编程改变世界’,和name从第一个取值的‘4.阿迪达斯’也是不匹配的啊?
第二个就是去掉slogan里面编号的是在哪一步体现的呀?

wstxdes 发表于 2020-8-22 17:47:44

我觉得二楼的解释很详细了,可是作为萌新的我思考了好久,总觉的哪里不对劲,slogan in list1那么slogan应该是个字符串,如:slogan = '2.一切皆有可能' ,而不是slogan = ,这不是列表吧,那么何谈slogan = 2 呢?可是试过之后,slogan = 2 ,这才知道字符串好像是可以看作列表的啊,但之前小甲鱼好像没讲过啊,不知道我对字符串可以看作列表的理解对不对?希望能得到大佬指导
页: [1]
查看完整版本: 【求解列表推导式】【零基础python作业012讲】