What does the [0]*x syntax do in Python?
一个闪现的问题,我在看下面的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from __future__ import division import math import time def dft(x, inverse = False, verbose = False) : t = time.clock() N = len(x) inv = -1 if not inverse else 1 X =[0] * N for k in xrange(N) : for n in xrange(N) : X[k] += x[n] * math.e**(inv * 2j * math.pi * k * n / N) if inverse : X[k] /= N t = time.clock() - t if verbose : print"Computed","an inverse" if inverse else"a","DFT of size",N, print"in",t,"sec." return X |
我想知道(我不认识Python):
- x=[0]*n行的作用是什么?
- 为什么是双星**?
1 2 3 | >>> [ 0 ] * 5 [0, 0, 0, 0, 0] >>> |
请注意,它们都指向同一对象。对于像整数这样的不可变项,这很酷,但是对于像列表这样的东西,这很痛苦。
1 2 3 4 5 6 7 | >>> t = [[]] * 5 >>> t [[], [], [], [], []] >>> t[0].append(5) >>> t [[5], [5], [5], [5], [5]] >>> |
1 2 | >>> 5 ** 2 25 |
这里演示了
1 2 | >>> [0]*10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] |
它"倍增"列表元素
1 2 | >>> [1, 2, 3] * 3 [1, 2, 3, 1, 2, 3, 1, 2, 3] |
1 2 | >>> 3**2 9 |
尽管要小心,它也可能是**Kwargs(在不同的上下文中),请在这里详细了解在python中使用**Kwargs的正确方法。
1 2 | >>> [0] * 10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] |
1 2 | >>> 2 ** 2 4 |
what does the X =[0] * N line do?
why the double asterisk ** ?
是电力运营商:
x=[0,0,0,0,0,0,0,0,0]
图示将是,
从技术上讲,列表中的所有八个单元格都引用同一对象。这是因为列表是Python中的引用结构。
而且,如果您试图为list分配一个新的值,比如
图示,
免责声明:
1)初始化包含n 0的列表。
2)