如何创建包含256个元素的列表?

Bit*_*rex 2 python

我已经开始自学Python了,作为练习,我自己设定了生成另一个项目所需的查找表的任务.

我需要生成256个元素的列表,其中每个元素都是值math.sin(2*i*pi/256).问题是,我不知道如何生成一个初始化为"虚拟"值的列表,然后我可以使用for循环逐步执行并分配sin函数的值.

使用list()似乎创建一个"空"列表,但没有元素,所以我在循环中得到"列表赋值索引超出范围"错误.有没有办法解决这个问题,除了显式创建一个包含256个元素的列表声明,所有元素都以"0"作为值?

Ale*_*lli 8

两个答案已经向您展示了如何使用"list comprehension"(AKA"listcomp")构造一次构建列表.

但是,要回答您的具体问题,

mylist = [None] * 256
Run Code Online (Sandbox Code Playgroud)

是最简单的方法来制作包含256个项目的列表None,以防万一你想在以后填写它.

如果从空列表开始,请调用其.append(...)方法以在末尾添加每个项目.除了append最初为空的列表之外什么都不做的循环通常会被更简洁的listcomp替换.

当然,对于你实际陈述的任务,

mylist = [math.sin(2 * math.pi/256)] * 256
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是最好的方法 - sin当论证总是相同时,没有意义计算256次(大胆地假设你说的是你的意思 ;-).


Ber*_*ron 5

my_list = [math.sin(2 * math.pi/256) for i in xrange(256)]
Run Code Online (Sandbox Code Playgroud)

  • +1,因为这确实产生了OP所明确表示他想要的东西(而不是像其他同样向上的答案那样完全不同的东西).但是,当[math.sin(2*math.pi/256)]*256`做同样的工作快几百倍时,做太多工作仍然是荒谬的! - ). (2认同)