[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]

    图形表示将类似于

  • 从技术上讲,列表中的所有八个单元格都引用同一个对象。这是因为列表在python中是引用结构

    而且,如果您尝试为列表分配一个新值,例如
    X[2]=10
    ,这在技术上不会更改现有整数实例的值。这将计算一个值为10的新整数,并将单元格2设置为引用新计算的值

    图形表示

  • **
    是幂运算符,用于计算数字的幂。例如,
    5**2
    结果为25

  • +1对于同一个可变对象,我会修正“使用
    x
    elements”,因为您可以将包含多个元素的列表相乘。谢谢大家的回答!你为什么不自己试试?例如,解释器外壳中的
    >[0]*10
    就足够了。。。
    >>> 3**2
    9