xiaojiayu555 发表于 2020-8-11 10:52:17

活学活用:请使用列表推导式补充被小甲鱼不小心涂掉的部分

本帖最后由 xiaojiayu555 于 2020-8-11 10:54 编辑

list1=['1.just do it','2.一切皆有可能','3.编程改变世界','4. impossible is nothing']
list2=['4.阿迪达斯','2.李宁','3.工作室','1.耐克']
list3=[]
for slogan in list1:
      for name in list2:
                if slogan==name:
                        list3.append(name + ':'+ slogan)
list1
'1.just do it'
list2
'1.耐克'
list1 == list2
False
#上面的if怎么成立的

qiuyouzhi 发表于 2020-8-11 10:53:05

判断序号呀,这俩列表里面每一个元素的第一个字符都是序号(数字),只要判断这俩是否相等就行了

uune 发表于 2020-8-11 11:38:49

本帖最后由 uune 于 2020-8-11 11:42 编辑

if判断的是:for循环出来的列表中的元素(字符串)
并把循环出来的字符串赋值给变量(slogan和name,都是字符串)
slogan == slogan(字符串)下标为0的字符,name == name(字符串)下标为0的字符

lis1 和 lis2获取的是列表中的元素(这个上面的2个for循环就做到了)
因为:lis1 == '1.just do it',而lis2 =='1.耐克'
所以:'1.just do it' == '1.耐克',肯定返回False

我们想要的结果:
'1.just do it' == '1'
'1. 耐克' == '1'
如果想要在for循环外面判断:lis1 == lis2,就会返回True。因为'1'=='1'

Twilight6 发表于 2020-8-11 12:56:06


你的 list1 == list2 是指索引列表的元素,而上面的 if 是通过 for 循环出列表中字符串,然后对字符串的字符进行索引,你举的例子,和题目中的不是一种类别的

详解看看这个吧:
python 第12讲的课后习题第六题
https://fishc.com.cn/thread-175291-1-1.html
(出处: 鱼C论坛)
页: [1]
查看完整版本: 活学活用:请使用列表推导式补充被小甲鱼不小心涂掉的部分