zhjshi40 发表于 2019-7-25 09:55:24

for in list 小疑问

>>> list1 = ['耐克','李宁','阿迪','亚瑟士']
>>> for each in list1 :
        print(each)

       
耐克
李宁
阿迪
亚瑟士
>>> each
'亚瑟士'
>>> each
'亚瑟士'
>>> each
'亚'
>>>
each为何是‘亚瑟士’?


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

slaganname 分别又是什么呢?

jackz007 发表于 2019-7-25 10:07:05

本帖最后由 jackz007 于 2019-7-25 10:09 编辑

    因为 '亚瑟士' 是列表 list1 的最后一个元素。

    for each 遍历 list1 中的每一个元素,循环完后,each 自然是最后那个元素的值。

凌九霄 发表于 2019-7-25 10:09:38

本帖最后由 凌九霄 于 2019-7-25 10:14 编辑

each在迭代中不断获得list1的每一项的值,最后获得的值是亚瑟士 ,所以...
slaganname 分别取的list1和list2的每一项的第一个字符,也就是那个数字,并以此数字为对应来匹配两个列表的的关系

zhjshi40 发表于 2019-7-25 10:36:26

凌九霄 发表于 2019-7-25 10:09
each在迭代中不断获得list1的每一项的值,最后获得的值是亚瑟士 ,所以...
slaganname 分别取的 ...

你好,each 最后获得的值是亚瑟士 ,所以each【0】是第一个字符‘’亚‘’,那么slogan和name 为何不是最后获得值的第一个字符?谢谢{:10_256:}

wp231957 发表于 2019-7-25 11:27:47

zhjshi40 发表于 2019-7-25 10:36
你好,each 最后获得的值是亚瑟士 ,所以each【0】是第一个字符‘’亚‘’,那么slogan和name 为何 ...

是取第一个字符slogan == name]他们的目的就是去取那个数字(字符型数字)1 2 3 4 用以合并

凌九霄 发表于 2019-7-25 14:09:20

本帖最后由 凌九霄 于 2019-7-25 14:14 编辑

zhjshi40 发表于 2019-7-25 10:36
你好,each 最后获得的值是亚瑟士 ,所以each【0】是第一个字符‘’亚‘’,那么slogan和name 为何 ...

slogan和name当然在最后会保存最后所获得的那个值,但是在列表推导式中会对每次获得的slogan和name的值进行切片处理。你实在不明白,你可以吧列表推导式改成普通的迭代形式,你跟踪下slogan和name的值的变化就明白了

zhjshi40 发表于 2019-7-25 14:55:27

凌九霄 发表于 2019-7-25 14:09
slogan和name当然在最后会保存最后所获得的那个值,但是在列表推导式中会对每次获得的slogan和name的值 ...

已经明白了谢谢
页: [1]
查看完整版本: for in list 小疑问