新手入门第十二讲疑惑
这道题目https://xxx.ilovefishc.com/forum/201310/12/044035qddrqkmrqod4cqmr.png
答案是
>>> list3 = for slogan in list1 for name in list2 if slogan == name]
题目中的代码并没有定义这个name是什么东西啊
并且这个slogan的用法也不是很明白
总的来说正行代码都看不懂!!T.T 本帖最后由 TCY 于 2018-12-8 13:24 编辑
name + ':' + slogan定义了链表元素
for slogan in list1 for name in list2定义了在什么对象下迭代
if slogan == name定义了元素在什么情况下加入链表 list3 = for slogan in list1 for name in list2 if slogan == name]
name和slogan是for循环中用于迭代的变量名称,要理解这一段代码的工作原理最好自己动手敲几遍。
1、列表1 和 列表2 里面的元素都是字符串,且第一个字符都是数字1、2、3、4;
2、用for循环将这两个列表的元素一一迭代出来,然后比较首字符,如果相等,就说明这两个内容是对应关系(如:4.Impossiple 对应 4.阿迪达斯)
3、最后将 name变量中的字符串与slogan变量中的字符串进行拼接(因为要去掉slogan变量中字符串前面的数字和圆点,所以只需要拼接第二个字符以后部分分name + “:” + slogan)
4、最后生成列表3 相当于:
for slogan in list1:
for name in list2:
if slogan == name:
list3.append(name + ':' + slogan) list3 = for slogan in list1 for name in list2 if slogan == name]
name 和 slogan 都是临时变量,随便起名字都可以, 你能不能理解 for each in list3这句呢?
这里面的each不也没有被定义吗?
你怎么理解 each的用法,就怎么理解name 和 slogan就好了啊
只不过 each 是list3里的元素 而 name是list2里的 slogan是针对list1的
list3 = [name + ':' + slogan for slogan in list1 for name in list2 if slogan == name]
1、看上面的越看越糊涂。首先分段看,三个颜色。
2、 红色的看不明白,先看中间紫色的。紫色的直线写是两个for循环嵌套,先理解第一个,for slogan in list1,好理解。slogan变量有了。第二个 for name in list2,name变量有了。
3、最后看那个暗红的,if条件。如果slogan的index0元素和name的0元素相等的话,怎么样呢?
4、看一开始的,那就name + ':' + sloganappend到list3中。
这样理解是不是简单多了呢? 以后用多了就知道了,一开始的红色的部分是表达式部分,你可以简单理解为列表推导式中需要的变量。
第二部分你可以简单理解为过程,第三部分可以简单理解为条件。
所以,其实他的工作步骤是3--1---2这么来的,以后用多了就熟悉了。
页:
[1]