Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python语法:在timeit语句中使用循环_Python_Timeit - Fatal编程技术网

Python语法:在timeit语句中使用循环

Python语法:在timeit语句中使用循环,python,timeit,Python,Timeit,其中两条语句运行,而另一条语句由于语法错误而失败。我做错了什么 >>> Timer('for i in xrange(10): oct(i)').repeat(3) [2.7091379165649414, 2.6934919357299805, 2.689150094985962] >>> Timer('n = [] ; n = [oct(i) for i in xrange(10)]').repeat(3) [4.0500171184539795, 3.6

其中两条语句运行,而另一条语句由于语法错误而失败。我做错了什么

>>> Timer('for i in xrange(10): oct(i)').repeat(3)
[2.7091379165649414, 2.6934919357299805, 2.689150094985962]
>>> Timer('n = [] ; n = [oct(i) for i in xrange(10)]').repeat(3)
[4.0500171184539795, 3.6979520320892334, 3.701982021331787]
>>> Timer('n = [] ; for i in xrange(10): n.append(oct(i))').repeat(3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/timeit.py", line 136, in __init__
    code = compile(src, dummy_src_name, "exec")
  File "<timeit-src>", line 6
    n = [] ; for i in xrange(10): n.append(oct(i))
               ^
SyntaxError: invalid syntax
>>计时器('x范围内的i(10):10月(i)')。重复(3)
[2.7091379165649414, 2.6934919357299805, 2.689150094985962]
>>>计时器('n=[];n=[oct(i)表示x范围内的i(10)])。重复(3)
[4.0500171184539795, 3.6979520320892334, 3.701982021331787]
>>>计时器('n=[];对于xrange(10)中的i:n.append(oct(i)))。重复(3)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/timeit.py”,第136行,在__
代码=编译(src,dummy\u src\u name,“exec”)
文件“”,第6行
n=[];对于x范围内的i(10):n.附加(10月(i))
^
SyntaxError:无效语法

您的失败语句在语法上不正确。如果需要对多个语句计时,请在从main导入函数后,在函数中定义它并调用计时器

>>> def foo():
    n = []
    for i in xrange(10): n.append(oct(i))    

>>> Timer("foo()","from __main__ import foo")
现在,您需要了解失败语句的错误原因

摘自

套件可以是一个或多个分号分隔的简单语句,位于标题的冒号之后,与标题位于同一行,也可以是后续行上的一个或多个缩进语句

stmt_list     ::=  simple_stmt (";" simple_stmt)* [";"]
同样,a是

现在,您应该清楚何时可以(不应该)使用分号

您也可以使用:


什么时候是
legal作为行分隔符?+1,尽管我更愿意将
n=[]
放在一个单独的设置参数中:
Timer(setup='n=[]',stmt='for I in range(10):n.append(oct(I))。重复(3)
stmt_list     ::=  simple_stmt (";" simple_stmt)* [";"]
simple_stmt ::=  expression_stmt
                 | assert_stmt
                 | assignment_stmt
                 | augmented_assignment_stmt
                 | pass_stmt
                 | del_stmt
                 | print_stmt
                 | return_stmt
                 | yield_stmt
                 | raise_stmt
                 | break_stmt
                 | continue_stmt
                 | import_stmt
                 | global_stmt
                 | exec_stmt
statement = '''n = []
for i in xrange(10):
    n.append(oct(i))'''

Timer(statement).repeat(3)