BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #7818同步于 2015/7/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

reverse a list

damcy
2015/7/15镜像同步7 回复
今天碰到一个小问题,就是我需要对一个list做reverse,当然有个不起眼的前提是,在原来的变量上修改。 用py写了一下,刚刚开始脚本里面是这样写: nums = nums[::-1] 可是运行print结果是对的,我把那些可能的都试了。结果返回还是有问题。 在过脚本的时候一直默许这句是ok的,直到两个小时后,尝试着改写为: nums.reverse() 然后就没内存问题了。太二了TAT 浪费了好久review 脚本语言很方便但是这错误太透明了~用py平时好像也没怎么注意这种问题 虽然本质上有不一样,但还是想看看那种跑得快(不用print的话reverse1会更快) import dis def reverse1(): test = [1, 2, 3, 4, 5, 6, 7] test.reverse() print test def reverse2(): test = [1, 2, 3, 4, 5, 6, 7] print test[::-1] if __name__ == '__main__': print 'reverse1' dis.dis(reverse1) print 'reverse2' dis.dis(reverse2) 结果: reverse1 5 0 LOAD_CONST 1 (1) 3 LOAD_CONST 2 (2) 6 LOAD_CONST 3 (3) 9 LOAD_CONST 4 (4) 12 LOAD_CONST 5 (5) 15 LOAD_CONST 6 (6) 18 LOAD_CONST 7 (7) 21 BUILD_LIST 7 24 STORE_FAST 0 (test) 6 27 LOAD_FAST 0 (test) 30 LOAD_ATTR 0 (reverse) 33 CALL_FUNCTION 0 36 POP_TOP 7 37 LOAD_FAST 0 (test) 40 PRINT_ITEM 41 PRINT_NEWLINE 42 LOAD_CONST 0 (None) 45 RETURN_VALUE reverse2 11 0 LOAD_CONST 1 (1) 3 LOAD_CONST 2 (2) 6 LOAD_CONST 3 (3) 9 LOAD_CONST 4 (4) 12 LOAD_CONST 5 (5) 15 LOAD_CONST 6 (6) 18 LOAD_CONST 7 (7) 21 BUILD_LIST 7 24 STORE_FAST 0 (test) 12 27 LOAD_FAST 0 (test) 30 LOAD_CONST 0 (None) 33 LOAD_CONST 0 (None) 36 LOAD_CONST 8 (-1) 39 BUILD_SLICE 3 42 BINARY_SUBSCR 43 PRINT_ITEM 44 PRINT_NEWLINE 45 LOAD_CONST 0 (None) 48 RETURN_VALUE
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
iamluo机器人#1 · 2015/7/15
要看哪种跑得快,用time模块不就行了 发自「贵邮」
b78859793机器人#2 · 2015/7/16
py有个测每个函数运行时间的库 我以前用过 忘了叫啥了
damcy机器人#3 · 2015/7/16
哈哈我蠢了,time也没怎么用过 【 在 iamluo 的大作中提到: 】 : 要看哪种跑得快,用time模块不就行了 : : 发自「贵邮」 : 发自「贵邮」
qiukun机器人#4 · 2015/7/16
这跟脚本语言有什么关系,java 不也一样?这是变量是引用还是值的区别。值的我就想得起 c/c艹
nuanyangyang机器人#5 · 2015/7/16
“创建新列表”和“原地(in-place)修改”的区别。
wai7niu8机器人#6 · 2015/7/30
http://ju.outofmemory.cn/entry/46805,是说这个么。 【 在 b78859793 的大作中提到: 】 : py有个测每个函数运行时间的库 我以前用过 忘了叫啥了
myjiayan机器人#7 · 2015/7/30
nums = nums[::-1] 创建了一个新列表并赋值给num nums.reverse()则是原有内存是上修改