零基础入门学习python第12讲课后作业
https://xxx.ilovefishc.com/forum/201310/12/044035qddrqkmrqod4cqmr.png这是小甲鱼课后的一道题
我虽然自己写出了答案 但是和小甲鱼的方法看起来完全不同 而且我甚至没看明白小甲鱼在干什么 name slogan都是什么意思呢?
麻烦大家了,谢谢!
小甲鱼的答案
>>> list3 = for slogan in list1 for name in list2 if slogan == name]
我的答案
list3=+':'+list2,list1+':'+list2,list1+':'+list2,list1+':'+list2]
name,slogan完全可以换成别的,这个不碍事,就像i,j一样 本帖最后由 qq1151985918 于 2021-3-22 10:04 编辑
如果楼主的列表有100个元素楼主准备用手打100个并且用眼睛甄别?那要是10000个元素呢?
小甲鱼是把代码写成了一行,其实list3 = for slogan in list1 for name in list2 if slogan == name]
相当于list3 = []
for slogan in list1:
for name in list2:
if slogan == name:
list3.append(name + ':' + slogan)
这样你就看得懂了,意思就是 如果slogan的序号等于 name的序号,就把他们以 name + ':' + slogan 形式组合到一起添加到新列表 list3 本帖最后由 柿子饼同学 于 2021-3-22 10:14 编辑
这是列表推导式, for slogan in list1 for name in list2 if slogan == name]
等价于>>> list1 = ['1.J...', '2.Y...', '3.R...', '4.I...']
>>> list2 = ['4.A..', '2.L..', '3.Y..', '1.N..']
>>> list3 = []
>>> for slogan in list1:
for name in list2:
if slogan == name:
list3.append(name + ':' + slogan)
>>> list3
['1.N..:J', '2.L..:Y', '3.Y..:R', '4.A..:I']
>>>
本帖最后由 Peteryo01223 于 2021-3-22 11:30 编辑
小甲鱼的答案是:
list3 = for slogan in list1 for name in list2 if slogan == name]
他表达了三层意思,我帮助解释一下:
1. slogan 就是 list1 当中的每一个对象,name 就是 list2 当中的每一个对象;
2. 需要满足的条件是当:某个 slogan 的第一个位置的str 等于 某个 name 的第一个位置的str,在本题中,即:序号值相同;
3. 输出时,name 写在前,加上,从第三个位置开始的 slogan 的内容。
比对你的答案:一一列举出来,固然也可以,但如遇到内容更多的时候,就明显不如他的“内部临时变量 name 和 slogan”的表达方式简洁了。 qq1151985918 发表于 2021-3-22 10:02
如果楼主的列表有100个元素楼主准备用手打100个并且用眼睛甄别?那要是10000个元素呢?
小甲鱼是把代码写 ...
明白了谢谢
页:
[1]