Sự khác biệt về tốc độ thực sự lớn hơn 3 lần, nhưng bạn làm chậm phiên bản bằng cách đầu tiên tạo ra một danh sách lớn trong bộ nhớ gồm 1 triệu số nguyên. Tách ra khỏi các thử nghiệm thời gian:
>>> import timeit
>>> def sum1[lst]:
... s = 0
... for i in lst:
... s += i
... return s
...
>>> def sum2[lst]:
... return sum[lst]
...
>>> values = range[1000000]
>>> timeit.timeit['f[lst]', 'from __main__ import sum1 as f, values as lst', number=100]
3.457869052886963
>>> timeit.timeit['f[lst]', 'from __main__ import sum2 as f, values as lst', number=100]
0.6696369647979736
Sự khác biệt về tốc độ đã tăng lên hơn 5 lần bây giờ.
Một vòng lặp for
được thực thi như mã python byte được giải thích. sum[]
Vòng lặp hoàn toàn trong mã C. Sự khác biệt tốc độ giữa mã byte được giải thích và mã C là lớn.
Ngoài ra, mã C đảm bảo không tạo các đối tượng Python mới nếu nó có thể giữ tổng trong các loại C thay thế; Điều này hoạt động cho kết quả
>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
0 và >>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
1.Phiên bản Python, được tháo rời, làm điều này:
>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
Ngoài vòng thông dịch chậm hơn C,
>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
2 sẽ tạo ra một đối tượng số nguyên mới [qua 255, CPyThon lưu trữ các đối tượng nhỏ >>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
0 dưới dạng singletons].Bạn có thể thấy việc triển khai C trong kho lưu trữ mã Mercurial Python, nhưng nó nêu rõ trong các bình luận:
/* Fast addition by keeping temporary sums in C instead of new Python objects.
Assumes all inputs are the same type. If the assumption fails, default
to the more general routine.
*/
Cải thiện bài viết
Lưu bài viết
Cải thiện bài viết
Lưu bài viết
Đọc
Syntax:
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.
Bàn luận
sum[a] a is the list , it adds up all the numbers in the list a and takes start to be 0, so returning only the sum of the numbers in the list. sum[a, start] this returns the sum of the list + start
Tổng số trong danh sách được yêu cầu ở mọi nơi. Python cung cấp một tổng số hàm sẵn [] tổng hợp các số trong danh sách. & Nbsp;
Python3
Có thể hai cú pháp:
Dưới đây là việc triển khai Python của SUM [] & NBSP;
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.7
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.8
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.3
sum[a] a is the list , it adds up all the numbers in the list a and takes start to be 0, so returning only the sum of the numbers in the list. sum[a, start] this returns the sum of the list + start0
>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
4>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
5 >>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
6>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
7>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
8>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
9>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
8/* Fast addition by keeping temporary sums in C instead of new Python objects.
Assumes all inputs are the same type. If the assumption fails, default
to the more general routine.
*/
1>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
8/* Fast addition by keeping temporary sums in C instead of new Python objects.
Assumes all inputs are the same type. If the assumption fails, default
to the more general routine.
*/
3>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
8__sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.7
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.8
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.3
sum[a] a is the list , it adds up all the numbers in the list a and takes start to be 0, so returning only the sum of the numbers in the list. sum[a, start] this returns the sum of the list + start0
Output:
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.3
>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
5 sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.5
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.6
sum[iterable, start]
iterable : iterable can be anything list , tuples or dictionaries ,
but most importantly it should be numbers.
start : this start is added to the sum of
numbers in the iterable.
If start is not given in the syntax , it is assumed to be 0.
3
5 >>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
sum[iterable, start]
iterable : iterable can be anything list , tuples or dictionaries ,
but most importantly it should be numbers.
start : this start is added to the sum of
numbers in the iterable.
If start is not given in the syntax , it is assumed to be 0.
5sum[a]
a is the list , it adds up all the numbers in the
list a and takes start to be 0, so returning
only the sum of the numbers in the list.
sum[a, start]
this returns the sum of the list + start
4sum[a]
a is the list , it adds up all the numbers in the
list a and takes start to be 0, so returning
only the sum of the numbers in the list.
sum[a, start]
this returns the sum of the list + start
5sum[a]
a is the list , it adds up all the numbers in the
list a and takes start to be 0, so returning
only the sum of the numbers in the list.
sum[a, start]
this returns the sum of the list + start
0
25
35
This error is raised in the case when there is anything other than numbers in the list.
Python3
Lỗi và ngoại lệ
TypeError: Lỗi này được nêu trong trường hợp khi có bất cứ thứ gì khác ngoài các số trong danh sách. & NBSP;
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.7
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.8
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.3
sum[a] a is the list , it adds up all the numbers in the list a and takes start to be 0, so returning only the sum of the numbers in the list. sum[a, start] this returns the sum of the list + start0
25 351
>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
5 25 353
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.7
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.8
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.3
sum[a] a is the list , it adds up all the numbers in the list a and takes start to be 0, so returning only the sum of the numbers in the list. sum[a, start] this returns the sum of the list + start0
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.3
>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
5 sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.5
25 357
Traceback [most recent call last]: File "/home/23f0f6c9e022aa96d6c560a7eb4cf387.py", line 6, in Sum = sum[arr] TypeError: unsupported operand type[s] for +: 'int' and 'str'
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.3
>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
5 sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.5
Traceback [most recent call last]: File "/home/23f0f6c9e022aa96d6c560a7eb4cf387.py", line 6, in Sum = sum[arr] TypeError: unsupported operand type[s] for +: 'int' and 'str'5
sum[a] a is the list , it adds up all the numbers in the list a and takes start to be 0, so returning only the sum of the numbers in the list. sum[a, start] this returns the sum of the list + start5
sum[a] a is the list , it adds up all the numbers in the list a and takes start to be 0, so returning only the sum of the numbers in the list. sum[a, start] this returns the sum of the list + start0 Practical Application: Problems where we require sum to be calculated to do further operations such as finding out the average of numbers.
Python3
Có thể hai cú pháp:
Dưới đây là việc triển khai Python của SUM [] & NBSP;
>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
4>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
5 >>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
6>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
7>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
8>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
9>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
8/* Fast addition by keeping temporary sums in C instead of new Python objects.
Assumes all inputs are the same type. If the assumption fails, default
to the more general routine.
*/
1>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
8/* Fast addition by keeping temporary sums in C instead of new Python objects.
Assumes all inputs are the same type. If the assumption fails, default
to the more general routine.
*/
3>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
8__sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.3
>>> import dis
>>> def sum1[]:
... s = 0
... for i in range[1000000]:
... s += i
... return s
...
>>> dis.dis[sum1]
2 0 LOAD_CONST 1 [0]
3 STORE_FAST 0 [s]
3 6 SETUP_LOOP 30 [to 39]
9 LOAD_GLOBAL 0 [range]
12 LOAD_CONST 2 [1000000]
15 CALL_FUNCTION 1
18 GET_ITER
>> 19 FOR_ITER 16 [to 38]
22 STORE_FAST 1 [i]
4 25 LOAD_FAST 0 [s]
28 LOAD_FAST 1 [i]
31 INPLACE_ADD
32 STORE_FAST 0 [s]
35 JUMP_ABSOLUTE 19
>> 38 POP_BLOCK
5 >> 39 LOAD_FAST 0 [s]
42 RETURN_VALUE
5 sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.5
sum[iterable, start] iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable. If start is not given in the syntax , it is assumed to be 0.6
Output:
3