宋立赢 发表于 2020-5-25 16:18:01

详细的讲解一下第三行代码的逻辑,如果可以顺便讲一下for怎么用(一直弄不明白)

list1 = ['1.Jost do It','2.一切皆有可能','3.让编程改变世界','4.Impossible is Nothing']
list2 = ['4.阿迪达斯','2.李宁','3.鱼C工作室','1.耐克']
list3 = for slogan in list1 for name in list2 if slogan == name]

sunrise085 发表于 2020-5-25 16:18:02


list3 = for slogan in list1 for name in list2 if slogan == name]

这是一个迭代。slogan从list1中寻找,name从list2中寻找,若两个字符串的第一个字符一样,则进行前面的拼接,即name + ':' + slogan
举例说明:
当name='1.耐克'时,slogan='1.just do it',此时list3中对应的元素由这个语句构成name+':'+slogan,即‘1.耐克’和':'和‘just do it’三个字符串拼接而成,也即‘1.耐克:just do it’,list3的其他元素类似。所以才会出现这个结果。

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)

Twilight6 发表于 2020-5-25 16:23:02

本帖最后由 Twilight6 于 2020-5-25 16:26 编辑

列表推导式 就是 如果后面有 if 条件 ,则if 条件成立就将 成立的值加入列表当作去

如果没有 if 那么就按for循环遍历的顺序加入列表当作去


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)

青出于蓝 发表于 2020-5-25 16:23:44

这个问题好火....

Twilight6 发表于 2020-5-25 16:25:07

建议搜索,问题已经被问烂了

宋立赢 发表于 2020-5-25 16:31:28

sunrise085 发表于 2020-5-25 16:23
list3 = for slogan in list1 for name in list2 if slogan == name]
...

那个是啥

宋立赢 发表于 2020-5-25 16:33:07

Twilight6 发表于 2020-5-25 16:25
建议搜索,问题已经被问烂了

好的嘞,也感谢你的回答

Twilight6 发表于 2020-5-25 16:34:32

宋立赢 发表于 2020-5-25 16:31
那个是啥

slogan
是切片操作噻
把 slogan 的前面序号给切掉不要了

Twilight6 发表于 2020-5-25 16:35:22

宋立赢 发表于 2020-5-25 16:33
好的嘞,也感谢你的回答

今天一天 加上你 有不下4人问了好像{:10_250:}都可以直接粘贴复制了

宋立赢 发表于 2020-5-25 16:44:10

Twilight6 发表于 2020-5-25 16:34
slogan
是切片操作噻
把 slogan 的前面序号给切掉不要了

明白了明白了,从索引2一直到最后,蟹蟹{:5_105:}

Twilight6 发表于 2020-5-25 16:44:50

宋立赢 发表于 2020-5-25 16:44
明白了明白了,从索引2一直到最后,蟹蟹

没事~~
页: [1]
查看完整版本: 详细的讲解一下第三行代码的逻辑,如果可以顺便讲一下for怎么用(一直弄不明白)