|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 philip_g 于 2020-11-11 17:24 编辑
求助,关于12讲的第六题的各种问题
首先,答案是:
list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
然后,我进行推导以后,应该是这样:
list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','4.impossible is nothing']
list2 = ['4.阿迪达斯','2.李宁','3.小甲鱼','1.耐克']
list3 = []
for slogan in list1:
for name in list2:
if slogan[0] == name[0]:
list3.append(name + ':' + slogan[2:])
print(list3)
问题1:我的输出结果为什么是“['1.耐克:just do it', '2.李宁:一切皆有可能', '3.小甲鱼:让编程改变世界', '4.阿迪达斯:impossible is nothing']”这样的,而不是缩进的。
问题2:为了验证“slogan[0] == name[0]”,我编写了一段代码,如下:
list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','4.impossible is nothing']
temp = []
for i in list1:
if i[0] == 1:
temp.append(i)
print (temp)
结果输出为:[],这个就很郁闷了,我本来的意图实际上是想得到['1.just do it']是我哪里写错了吗?
问题3:关于“slogan[2:]”按照课堂上老师对分片的讲解,我认为应该输出的list2是“['3.小甲鱼','1.耐克']”从索引值为2开始,到结束。参看了问题求助的大部分解释后,我怎么感觉大家解释的意思都是说将列表list2中的每一个元素的索引值为2以后的字符进行保留。关于这点,我十分的费解
请大神们多多指教~小弟在此谢过~~
问题1:我的输出结果为什么是“['1.耐克:just do it', '2.李宁:一切皆有可能', '3.小甲鱼:让编程改变世界', '4.阿迪达斯:impossible is nothing']”这样的,而不是缩进的?
因为你是直接 print(list3) 打印 list3 , 而 list3 是一个列表所以打印结果就是将整个列表打印出来
你对 list3 加个 for 循环进行打印即可达到一行一行打印的效果,参考代码:list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','4.impossible is nothing']
list2 = ['4.阿迪达斯','2.李宁','3.小甲鱼','1.耐克']
list3 = []
for slogan in list1:
for name in list2:
if slogan[0] == name[0]:
list3.append(name + ':' + slogan[2:])
for i in list3:
print(i)
问题2:验证“slogan[0] == name[0]”,出错
你需要知道 字符串的 '1' 是不等于整形 1 的,因为这两个数据类型是不同的
即 '1' 是字符串类型,而 1 是整形,不可能相等,也就永远不可能满足你 if 条件 所以最终输出列表的结果为 空列表
改动后的参考代码:list1 = ['1.just do it','2.一切皆有可能','3.让编程改变世界','4.impossible is nothing']
temp = []
for i in list1:
if i[0] == '1': # 这里 1 改成字符串 '1' 或者将 i[0] 改为 int(i[0])
temp.append(i)
print (temp)
python 第12讲的课后习题第六题
https://fishc.com.cn/thread-175291-1-1.html
|
|