削袋柚子皮 发表于 2020-2-22 11:00:48

python第十二节课课后习题有关列表解析

list1 = ['1.just 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]
>>> list3
['1.耐克:just do it', '2.李宁:一切皆有可能', '3.鱼c工作室:让编程改变世界', '4.阿迪达斯:Impossible is Nothing']
>>> for each in list3:
    print(each)
1.耐克:just do it
2.李宁:一切皆有可能
3.鱼c工作室:让编程改变世界
4.阿迪达斯:Impossible is Nothing

————各位鱼友,我想问一下这里为什么slogan=name 还有为什么是slogan
小白一个,可能问题比较弱智,谢谢大家

txxcat 发表于 2020-2-22 11:15:36

其实你不清楚的是“分片”,建议你百度了解一下。简单来说:是列表或字符串的第一个元素,这题里就是各编号1234,是三个元素到最后一个元素,这题里是序号加点以后的内容,就是那些口号。

°蓝鲤歌蓝 发表于 2020-2-22 11:16:46

1. 因为 list1 和 list2 中的字符串前面都有个编号, slogan=name 这里的意思便是如果编号相同的,就写在一起。
2. 1 里说了,目的是为了编号相同的字符串写在一起,可是两个字符串都有编号,写在一起只需要一个编号,所以就把写在后面的那个字符串的编号去掉,故下标从2开始。

qiuyouzhi 发表于 2020-2-22 11:17:42

1,slogan==name 是判断序号,如果序号一样就放在一起
2,slogan是内容,因为前两位是序号和点(.),要把这两个跳过去
希望有帮助

削袋柚子皮 发表于 2020-2-22 11:43:57

qiuyouzhi 发表于 2020-2-22 11:17
1,slogan==name 是判断序号,如果序号一样就放在一起
2,slogan是内容,因为前两位是序号和点(. ...

1.列表中给每个元素标号后,就算排列的时候不是按照标号顺序来,匹配的时候= 也是可以顺利匹配的吗?
2. name+':'+slogan 这一整个东西不是才算list3一个元素吗?
麻烦你了 {:5_111:}

qiuyouzhi 发表于 2020-2-22 12:15:21

削袋柚子皮 发表于 2020-2-22 11:43
1.列表中给每个元素标号后,就算排列的时候不是按照标号顺序来,匹配的时候= 也是可以顺利匹配的吗 ...

1,因为就是排序号的啊,如果还有没排完的他就会无限迭代
2,不是的,只要拼接在一起就是一个元素,然后会继续

削袋柚子皮 发表于 2020-2-22 12:55:41

qiuyouzhi 发表于 2020-2-22 12:15
1,因为就是排序号的啊,如果还有没排完的他就会无限迭代
2,不是的,只要拼接在一起就是一个元素,然后 ...

1.耐克:just do it
为什么耐克不是2位 而序号1是0位 .是1位

qiuyouzhi 发表于 2020-2-22 12:59:33

削袋柚子皮 发表于 2020-2-22 12:55
1.耐克:just do it
为什么耐克不是2位 而序号1是0位 .是1位

>>> a = ['a', 'b', 'c', 'd', 'de']
>>> b = a
>>> b
['c', 'd', 'de']
>>>
能看懂吗

削袋柚子皮 发表于 2020-2-22 13:18:08

qiuyouzhi 发表于 2020-2-22 12:59
能看懂吗

能呀{:5_99:}
可是'1.耐克:just do it' 这不是一个元素吗 用引号括起来的 我纠结的点是这个

qiuyouzhi 发表于 2020-2-22 13:21:30

削袋柚子皮 发表于 2020-2-22 13:18
能呀
可是'1.耐克:just do it' 这不是一个元素吗 用引号括起来的 我纠结的点是这个

对啊,这就是一个元素
然后就在这个元素的后边添加

削袋柚子皮 发表于 2020-2-22 13:34:57

qiuyouzhi 发表于 2020-2-22 13:21
对啊,这就是一个元素
然后就在这个元素的后边添加

“slogan是内容,因为前两位是序号和点(.),要把这两个跳过去”
‘1.just do it’
那既然都是一个整体了 为什么要删除slogan前面的序号就要用slogan 序号,点,slogan不都是在一对引号里面吗

qiuyouzhi 发表于 2020-2-22 13:48:49

削袋柚子皮 发表于 2020-2-22 13:34
“slogan是内容,因为前两位是序号和点(.),要把这两个跳过去”
‘1.just do it’
那既然都是一个整 ...

要把slogan和name拼接在一起啊

削袋柚子皮 发表于 2020-2-22 14:16:03

qiuyouzhi 发表于 2020-2-22 13:48
要把slogan和name拼接在一起啊

我好像明白了 应该是从list1里面选一个slogan 然后这一个元素里再
我前面一直觉得slogan应该等于['3.让编程改变世界', '4.Impossible is Nothing']

qiuyouzhi 发表于 2020-2-22 14:23:12

削袋柚子皮 发表于 2020-2-22 14:16
我好像明白了 应该是从list1里面选一个slogan 然后这一个元素里再
我前面一直觉得slogan应该等 ...

对,然后和name里的元素拼接

smart47896 发表于 2020-2-23 07:00:34

本人也是新手
我也解不出來,後來看答案把老師的代碼還原出來,給你參考A對a B對b C對c D對d
list1=['1.aaaa','2.bbbb','3.cccc','4.dddd']
list2=['4.DDDD','2.BBBB','3.CCCC','1.AAAA']
for slogan in list1:
    for name in list2:
      list3=]
      if slogan == name:
            for i in list3:               
                print(i)

後來自己又練習了一次,發現滿好玩的

list1=["1.魯夫(路飞)","2.香吉士(山治)","3.娜美","4.索隆"]
list2=["4.我是路癡","1.我要成為海賊王","3.我有大奶","2.我愛娜美"]
for name in list1:
    for slogan in list2:
      list3=]      #slogan 從字串的第二個字開始
      if name == slogan:      #若name的第一個字與slogan的第一個字相符
            for i in list3:
               print(i)
            
            
页: [1]
查看完整版本: python第十二节课课后习题有关列表解析