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行:列表赋值索引超出范围
任何人都可以帮我解决这个问题吗?
[]仅当列表中的索引处已存在元素时才起作用.使用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)
这是实现您想要的更简单的方法.不要担心,如果您的代码有效并且您理解它,那么它是最重要的.你不需要这样做.我只是给你这些信息,所以如果你愿意,你可以在以后使用它.
您需要扩展该列表。使用:
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)
| 归档时间: |
|
| 查看次数: |
37077 次 |
| 最近记录: |