Pau*_*aul 13 python math programming-languages
一个flash问题,我正在看下面的代码
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
Run Code Online (Sandbox Code Playgroud)
我想知道(我不知道python):
Nou*_*him 16
将[0] * x
创建一个列表x
元素.所以,
>>> [ 0 ] * 5
[0, 0, 0, 0, 0]
>>>
Run Code Online (Sandbox Code Playgroud)
请注意,他们都指向同一个对象.这对于像整数这样的不可变因素来说很酷,但对列表之类的东西却很痛苦.
>>> t = [[]] * 5
>>> t
[[], [], [], [], []]
>>> t[0].append(5)
>>> t
[[5], [5], [5], [5], [5]]
>>>
Run Code Online (Sandbox Code Playgroud)
该**
运算符用于求幂.
>>> 5 ** 2
25
Run Code Online (Sandbox Code Playgroud)
Hen*_*nry 13
该x = [0] * n
证明在这里:
>>> [0]*10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
它将列表元素"倍增"
>>> [1, 2, 3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
的**
是电力运营商
>>> 3**2
9
Run Code Online (Sandbox Code Playgroud)
虽然要小心,它也可能是**kwargs(在不同的上下文中),请参阅更多关于这里的正确方法在Python中使用**kwargs
X =[0] * N
, 生成大小为 N 的列表,所有 N 元素的值都为零。例如,X = [0] * 8
生成一个大小为 8 的列表。
X = [0, 0, 0, 0, 0, 0, 0, 0]
图片表示会像,
从技术上讲,列表的所有八个单元格都引用同一个对象。这是因为列表是 Python 中的引用结构。
并且,如果您尝试为 list 分配一个新值,例如X[2] = 10
,这在技术上不会更改现有整数实例的值。这将计算一个新的整数,值为 10,并将单元格 2 设置为引用新计算的值。
图片表示,
**
是幂运算符并计算一个数的幂。例如,5 ** 2
结果为 25。