我已经开始自学Python了,作为练习,我自己设定了生成另一个项目所需的查找表的任务.
我需要生成256个元素的列表,其中每个元素都是值math.sin(2*i*pi/256).问题是,我不知道如何生成一个初始化为"虚拟"值的列表,然后我可以使用for循环逐步执行并分配sin函数的值.
使用list()似乎创建一个"空"列表,但没有元素,所以我在循环中得到"列表赋值索引超出范围"错误.有没有办法解决这个问题,除了显式创建一个包含256个元素的列表声明,所有元素都以"0"作为值?
两个答案已经向您展示了如何使用"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次(大胆地假设你说的是你的意思 ;-).
my_list = [math.sin(2 * math.pi/256) for i in xrange(256)]
Run Code Online (Sandbox Code Playgroud)