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

时间:2010-03-11 04:05:42

标签: python

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

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

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

5 个答案:

答案 0 :(得分:8)

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

回答你的具体问题,

mylist = [None] * 256

是制作包含256个项目的列表的最简单方法,全部为None,以防您以后填写。

如果您从一个空列表开始,请调用其.append(...)方法在末尾添加每个项目。在最初为空的列表上只执行append的循环通常会被更简洁的listcomp替换。

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

mylist = [math.sin(2 * math.pi/256)] * 256

到目前为止是最好的方法 - 当参数总是相同时,没有意义计算sin 256次(大胆地假设你的是你意味着什么; - 。)

答案 1 :(得分:5)

my_list = [math.sin(2 * math.pi/256) for i in xrange(256)]

答案 2 :(得分:1)

  

我需要生成一个256的列表   每个元素都是的元素   math.sin的值(2 * math.pi / 256)

按字面意思回答你的问题:

my_list=[math.sin(2*math.pi/256)]*256

答案 3 :(得分:1)

您也可以尝试:

l = []
for i in range(256):
    l.append(math.sin(2*math.pi/256))

这是一个迭代的for循环,它不断将相同的值添加到列表的末尾256次

答案 4 :(得分:0)

感谢大家的帮助。我在为问题发布的规范中确实犯了一个错误,因为列表中每个元素的值需要每次以2 * pi / 256的角度递增。在这种情况下适合我的代码是:

li = [math.sin((2*math.pi/256)*i) for i in xrange(0,256)]