|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
有两个问题请教。。。
第一个问题,程序理解:
list1 = ['1.Jost do It','2.一切皆有可能','3.让变成改变世界','4.Impossible is nothing']
list2 = ['4.阿迪达斯','2.李宁','3.鱼C工作室','1.耐克']
list3 = [name + ':' + temp[2:] for temp in list1 for name in list2 if temp[0] == name[0]]
print(list3)
for each in list3:
print(each)
蓝字部分不是很理解,为什么name不需要加[]而temp需要加[]
后面if temp[0] == name[0],为什么会自动调整顺序,有点懵了
第二个问题:
我自己写了个推导式总是在蓝字部分报错,找不到原因了,
list1 = ['1.Jost do It','2.一切皆有可能','3.让变成改变世界','4.Impossible is nothing']
list2 = ['4.阿迪达斯','2.李宁','3.鱼C工作室','1.耐克']
list3 = []
for temp in list1:
for name in list2:
if temp[0] == name[0]:
list3.append(name + ':' + temp[2:])
print(list3)
for each in list3:
print(each,end='')
请大佬赐教,就这个题目弄了一个多小时没明白
1.(1)不用打[]的原因在于你想要输出什么样的结果,你加中括号也是没错的,按上面的代码你会输出比如说(1.耐克:just do it)因为你不想输出的结果是:(1.耐克:1.just do it)所以将后面的字符串切片了,前面的1.就去掉,因此就是name不要加,temp要加
(2)temp和name都是字符串,代码的判断条件就是判断字符串前面那个数字是不是一样的,如果是一样的就会被放入到列表3中,不是一样的就会被过滤,所以输出的结果你看起来就是在排序。此外,如果你说的排序是指1.2,3,4这种升序排列的话,主要原因在于在列表3中你是先循环了列表1,所以排序就会是1—-、2——-、3—-、4—-。如果你先循环列表2.输出的结果就会是4—-、3—-等(降序排列)
2.你的代码中print()的缩进有问题(参考楼上大佬们回答)
|
|