python - [0]*x 语法在 Python 中有什么作用?

标签 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 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/

相关文章:

python - 使用 python 进行安静的分页

algorithm - rBST 的计算概率

c++ - 查找一对 N 是素数优化

unicode - 各种编程语言的Unicode支持

python - Pandas 是否在加载下一个 block 后从内存中释放最后一个 block ?

python - 导入后未将属性添加到模块

python - 列出 N 以下所有素数的最快方法

functional-programming - Derivable 规则和 Admissible 规则之间的区别?

programming-languages - 快速发布或学习新语言

python - 测试kivy编写的应用程序时如何与UI交互?