一道闪题,我在看下面的代码
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 行是做什么的?
- 为什么是双星号 ** ?
最佳答案
[0] * x
创建一个包含 x
元素的列表。所以,
>>> [ 0 ] * 5
[0, 0, 0, 0, 0]
>>>
请注意,它们都指向同一个对象。这对于像整数这样的不可变对象(immutable对象)来说很酷,但对于像列表这样的东西来说却很痛苦。
>>> t = [[]] * 5
>>> t
[[], [], [], [], []]
>>> t[0].append(5)
>>> t
[[5], [5], [5], [5], [5]]
>>>
**
运算符用于求幂。
>>> 5 ** 2
25
关于python - [0]*x 语法在 Python 中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6007881/