使用循环创建列表,用float()填充它

Yag*_*aga 2 python for-loop list

我目前正在开发一个项目,要求我有一个从0.9到1.2的列表,步长为0.01.我尝试了以下方法:

init = float(0.9)
l = []
for i  in range(0,31):
  l[i]= init + ( float(i) / 100 )
Run Code Online (Sandbox Code Playgroud)

但是,python给了我以下输出:

回溯(最近一次调用最后一次):IndexError中的文件"",第2行:列表赋值索引超出范围

任何人都可以帮我解决这个问题吗?

e-s*_*tis 9

[]仅当列表中的索引处已存在元素时才起作用.使用list.append():

init = float(0.9)
l = []
for i  in range(0,31):
  l.append(init + ( float(i) / 100 ))
Run Code Online (Sandbox Code Playgroud)

一旦您对此感到满意,您甚至可以使用理解列表:

l = [init + (float(i) / 100 )) for i in range(0, 31)]
Run Code Online (Sandbox Code Playgroud)

Python中很少使用索引.我理解很多人这样做是因为它是其他语言的习惯,但大多数时候,它是Python中的反模式.如果你看到i某个地方,总是想知道你是不是想重新发明轮子.

BTW.分部优先考虑加法,因此不需要括号.另外,init = float(0.9)是多余的.你可以写init = 0.9.并且/总是返回一个浮点数,因此你可以这样做:

l = []
for i in range(0, 31): 
  l.append(0.9 + i / 100)
Run Code Online (Sandbox Code Playgroud)

还要注意我放置空间的方式.它是Python中最常用的样式约定.

并且有一个理解列表:

l = [0.9 + i / 100 for i in range(0, 31)]
Run Code Online (Sandbox Code Playgroud)

这是实现您想要的更简单的方法.不要担心,如果您的代码有效并且您理解它,那么它是最重要的.你不需要这样做.我只是给你这些信息,所以如果你愿意,你可以在以后使用它.


Sor*_*rin 3

您需要扩展该列表。使用:

l.append(init + (float(i)/100))
Run Code Online (Sandbox Code Playgroud)

或者

l += [init + (float(i)/100)]
Run Code Online (Sandbox Code Playgroud)

甚至更Pythonic的方式

l = [init + (float(i)/100) for i in range(0, 31)]
Run Code Online (Sandbox Code Playgroud)