返回信息流今天碰到一个小问题,就是我需要对一个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
这是一条镜像帖。来源:北邮人论坛 / python / #7818同步于 2015/7/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
reverse a list
damcy
2015/7/15镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
哈哈我蠢了,time也没怎么用过
【 在 iamluo 的大作中提到: 】
: 要看哪种跑得快,用time模块不就行了
:
: 发自「贵邮」
:
发自「贵邮」
http://ju.outofmemory.cn/entry/46805,是说这个么。
【 在 b78859793 的大作中提到: 】
: py有个测每个函数运行时间的库 我以前用过 忘了叫啥了