ahluo 发表于 2020-7-28 14:08:02

关于列表课后题的扩展

本帖最后由 ahluo 于 2020-7-28 14:09 编辑

https://fishc.com.cn/forum.php?mod=viewthread&tid=38903&extra=page%3D1%26filter%3Dtypeid%26typeid%3D398

在这个课后题中,是这样说的:
list1=['1.Just do it', '2.Everything is possible','3.Programme changes the world', '4.Impossible is nothing']
list2=['4.阿迪达斯', '2.李宁','3.工作室', '1.耐克']
list3 如何写?

要达到的结果是:
['1.耐克:Just do it', '2.李宁:Everything is possible', '3.工作室:Programme changes the world', '4.阿迪达斯:Impossible is nothing']

给出的答案是:
list3 = for slogan in list1 for name in list2 if slogan == name]

个人想法
这个答案是用的list1和2中第0个字符来对比,相等就执行程序。但是如果list中有10+个数据的话,那1和10项也会符合这个条件,我就不知道怎么做比较好。

我个人的想法是用 index() 来判断 '.' 在每个元素中的位置L,然后对比 的大小,但是不会写{:10_250:} 可能是暂时还没有学到这个阶段吧。希望有高手来说一下谢谢啦~

sunrise085 发表于 2020-7-28 14:15:30

本帖最后由 sunrise085 于 2020-7-28 14:18 编辑

用split()函数就很合适了。这是字符串的分割函数
list1=['1.Just do it','11.不是每一滴牛奶都叫特仑苏','2.Everything is possible','3.Programme changes the world', '4.Impossible is nothing']
list2=['4.阿迪达斯', '2.李宁','3.工作室', '11.特仑苏','1.耐克']

list3=[]
for slogan in list1:
    index1,wds=slogan.split('.',1)
    #print(index1,wds)#你可以看看分割的效果
    for name in list2:
      index2,co=name.split('.')
      if index1 == index2:
            list3.append(name + ':' + wds)
print(list3)

Twilight6 发表于 2020-7-28 14:35:14

本帖最后由 Twilight6 于 2020-7-28 14:36 编辑


也可以用 split 切割小数点,然后此时就有两个元素了,直接比较第一位元素即可:

list1=['20.FishC','1.Just do it', '2.Everything is possible','3.Programme changes the world', '4.Impossible is nothing']
list2=['4.阿迪达斯', '2.李宁','3.工作室', '1.耐克','20.鱼C']

temp = for i in list2 for j in list1 if i.split('.',1) == j.split('.',1)]
print(temp)

把 for i in list2 for j in list1 if i.split('.',1) == j.split('.',1)] 展开和甲鱼哥课后练习是一个道理哈:

temp = []
for i in list2:
    for j in list1:
      if i.split('.', 1) == j.split('.', 1):
            temp.append(i + ':' + j)
print(temp)

输出结果:
['4.阿迪达斯:Impossible is nothing', '2.李宁:Everything is possible', '3.工作室:Programme changes the world', '1.耐克:Just do it', '20.鱼C:FishC']


页: [1]
查看完整版本: 关于列表课后题的扩展