1、为什么列表元素是乱的,却能一一排列整齐?
这句代码,可以分解为下面这个:
- for slogan in list1:
- for name in list2:
- if slogan[0]==name[0]:
- list3.append(name + ':' + slogan[2:])
复制代码
第一个for循环是在list1中取元素,list1中的元素是按照1/2/3/4排序的,所以执行顺序就是1/2/3/4
详细:
list1中的1--->与list2中的4/2/3/1相比较,与最后的1相等,所以执行list3.append(name + ':' + slogan[2:],即将'1.耐克:Jost do It'插入到list3最后一个位置,此时list3=['1.耐克:Jost do It']
接着list中的2--->与list2中的4/2/3/1相比较,与2相等,所以'2.李宁:一切皆有可能'插入到list3中最后一个位置,即list3=['1.耐克:Jost do It','2.李宁:一切皆有可能']
接着剩下2条,同理
你可以自己试一下list1和list2反过来的:
- for slogan in [b]list2[/b]:
- for name in [b]list1[/b]:
- if slogan[0]==name[0]:
- list3.append(name + ':' + slogan[2:])
复制代码
那么执行结果的顺序就是按照list2来的,即4/2/3/1
4.Impossible is nothing:阿迪达斯
2.一切皆有可能:李宁
3.让编程改变世界:鱼C工作室
1.Jost do It:耐克
2、slogan[2:] ——从2开始到末尾的数据?
答:明确slogan在这句里的for slogan in list1
若slogan=['1.Jost do It'],则slogan[2:]是从第三个字符到最后,即Jost do It,前面的1.不要了
slogan=['2.一切皆有可能'],slogan[2:]即一切皆有可能,前面的2.不要了,另外2个同理
如果你执行
- list3.append(name + ':' + slogan[:])
复制代码,那么执行结果就是:
1.耐克:1.Jost do It
2.李宁:2.一切皆有可能
3.鱼C工作室:3.让编程改变世界
4.阿迪达斯:4.Impossible is nothing
不需要显示2次数字,所以用[2:]省去slogan的1./2./3./4.
if slogan 第0个数据 等于 name 第0个数据? 这句是什么鬼……
这个差不多就是:1.Jost do It和4.阿迪达斯比较,1!=4,所以后面list3.append(name + ':' + slogan[:])不执行
1.Jost do It和2.李宁比较,1!=2
1.Jost do It和3.鱼C工作室比较,1!=3
直到1.Jost do It和1.耐克比较,1==1,所以后面的那条才执行,把耐克和Jost do It关联起来
2.一切皆有可能 依次和4.阿迪达斯,2.李宁,3.鱼C工作室,1.耐克比较,则2==2,把这俩关联起来
3.让编程改变世界 依次和4.阿迪达斯,2.李宁,3.鱼C工作室,1.耐克比较,则3==3,……
4.Impossible is nothing依次和4.阿迪达斯,2.李宁,3.鱼C工作室,1.耐克比较,则4==4,……