鱼C论坛

 找回密码
 立即注册
查看: 581|回复: 4

[已解决]012讲列表推导式问题(我这个程序思路能不能再拯救一下...)

[复制链接]
发表于 2019-1-30 22:15:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
惯例,先放问题
https://fishc.com.cn/thread-38903-1-1.html
中的第6题

我的代码
  1. # 给出的原始列表
  2. list1 = ['1.Just Do It', '2.一切皆有可能', '3.让编程改变世界', '4.Impossible is Nothing']
  3. list2 = ['4.阿迪达斯', '2.李宁', '3.鱼C工作室', '1.耐克']
  4. #
  5. list3 = [list2.sort() (list2[x] + ' : ' + list1[x].strip('1234.')) for x in range(0, 4)]
  6. for each in list3:
  7.     print(each)
复制代码


出现的问题(异常):list3这行,TypeError: 'NoneType' object is not callable,推测原因是由list2.sort()导致

list3这行的思路:先整理list2到顺序状态,然后append list1和2里对应的元素,并去除list1里面元素开头的的'1234.'这几个字符(如果有),但是list2.sort()好像不能写在list3 = []里面,然而对list2进行sort又是后面实现合理的append不可或缺的一步(不sort的话,print出来":"两边的内容会对不上)

我这个编程思路还能否拯救一下?

NB: list3的创建必须在必须在[]内完成,所以把list2.sort()挪到list3 = []外是不行的

最佳答案
2019-1-31 01:21:54
本帖最后由 凌九霄 于 2019-1-31 01:28 编辑
  1. list3 = [ (sorted(list2)[ x ] + ' : ' + sorted(list1)[ x ][2:]) for x in range(0, 4) ]
复制代码

或者
  1. list3 = [ (sorted(list2)[ x ] + ' : ' + sorted(list1)[ x ].strip('1234.')) for x in range(0, 4) ]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-1-30 22:56:53 | 显示全部楼层
iwanna 发表于 2019-1-30 22:55
太复杂就不要用列表推导式,你在本末倒置

不是我想用,是题目要求我用推导式,具体参见https://fishc.com.cn/thread-38903-1-1.html第6题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-31 01:21:54 | 显示全部楼层    本楼为最佳答案   
本帖最后由 凌九霄 于 2019-1-31 01:28 编辑
  1. list3 = [ (sorted(list2)[ x ] + ' : ' + sorted(list1)[ x ][2:]) for x in range(0, 4) ]
复制代码

或者
  1. list3 = [ (sorted(list2)[ x ] + ' : ' + sorted(list1)[ x ].strip('1234.')) for x in range(0, 4) ]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-31 15:02:14 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-17 19:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表