|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
>>> list1 = ['1.Just do it!', '2.一切皆有可能!', '3.让编程改变世界!', '4.Impossible is Nothing!']
>>> list2 = ['4.阿迪达斯', '2.李宁', '3.鱼C工作室', '1.耐克']
>>> list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
>>> print(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!
我的问题是针对 list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
1.小甲鱼不是说不要使用连接符+来拼接字符串吗?
2、list3的推导式有点看不明白:书上很多内容看懂了,但一旦到了实战或作业题,好像还是一知半解,比如列表分片有点乱
(1)slogan[2:]是指list1中去除序号和点以后的内容?为什么可以这样表示?我特地测试了下面的
>>> str1 = 'laizhibin'
>>> str1[2]
'i'
>>> str1[2:]
'izhibin'
>>> str2 = ['laizhibin']
>>> str2[2]
Traceback (most recent call last):
File "<pyshell#165>", line 1, in <module>
str2[2]
IndexError: list index out of range
>>> str2[2:]
[]
>>> str3 = ['1.Just do it!', '2.一切皆有可能!', '3.让编程改变世界!', '4.Impossible is Nothing!']
>>> str3[2]
'3.让编程改变世界!'
>>> str3[2:] # 与slogan[2:]返回结果完全不同!!!
['3.让编程改变世界!', '4.Impossible is Nothing!']
(2)slogan[0]和name[0]分别是指list1和list2中的序号吧?为什么可以这样表示?
(3)slogan[0] == name[0]是为了在list1和list2中通过序号建立一一对应的关联关系?
3、生成结果为何会按1-4的顺序排列呢? |
|