[0]*x语法在Python中的作用是什么?
一个简短的问题,我正在看下面的代码[0]*x语法在Python中的作用是什么?,python,math,programming-languages,Python,Math,Programming Languages,一个简短的问题,我正在看下面的代码 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
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行做什么
- 为什么是双星号**
X=[0]*N
创建长度为N
的零数组。例如:
>>> [0] * 10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
**
是最新版本
X=[0]*N行做什么
[0]
是一个包含单个元素的序列–0
。将一个序列乘以n
意味着将其n
乘以自身。也就是说,结果是一个包含n
零的序列
为什么是双星号**
它是power操作符:b**e
=be.1)它初始化一个包含n0的列表
2)
**
是求幂运算符[0]*x
创建一个包含x
元素的列表。所以
>>> [ 0 ] * 5
[0, 0, 0, 0, 0]
>>>
请注意,它们都指向同一个对象。这对于不可变的整数来说很酷,但对于列表之类的东西来说却很痛苦
>>> t = [[]] * 5
>>> t
[[], [], [], [], []]
>>> t[0].append(5)
>>> t
[[5], [5], [5], [5], [5]]
>>>
**
运算符用于指数运算
>>> 5 ** 2
25
此处演示了
x=[0]*n
:
>>> [0]*10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
它将列表元素“相乘”
>>> [1, 2, 3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
**
是电源操作员
>>> 3**2
9
尽管要小心,它也可能是**kwargs(在不同的上下文中),请参阅此处的更多信息
[0]*N
创建一个大小为N的列表,其中只包含0
**
是将左侧提升到右侧幂的符号
免责声明:
[a]*N
如果a
是对对象的引用,它将复制引用,而不会在生成的列表中复制a
X=[0]*N
生成大小为N的列表,所有N个元素的值均为零。例如,X=[0]*8
,生成大小为8的列表
X=[0,0,0,0,0,0,0,0,0,0]
图形表示将类似于X[2]=10
,这在技术上不会更改现有整数实例的值。这将计算一个值为10的新整数,并将单元格2设置为引用新计算的值
图形表示
**
是幂运算符,用于计算数字的幂。例如,5**2
结果为25+1对于同一个可变对象,我会修正“使用
x
elements”,因为您可以将包含多个元素的列表相乘。谢谢大家的回答!你为什么不自己试试?例如,解释器外壳中的>[0]*10
就足够了。。。
>>> 3**2
9