将循环表达为列表推导是很常见的:
mylist=[]
for i in range(30):
mylist.append(i**2)
Run Code Online (Sandbox Code Playgroud)
这相当于:
mylist = [i**2 for i in range(30)]
Run Code Online (Sandbox Code Playgroud)
是否有任何一种机制可以通过while循环完成这种迭代?
mylist=[]
i=0
while i<30:
mylist.append(i**2)
i+=1
Run Code Online (Sandbox Code Playgroud)
当然,通过这个简单的例子,很容易转换为for
循环,然后转换为列表理解,但是如果它不那么容易呢?
例如
mylist = [i**2 while i=0;i<30;i++ ]
Run Code Online (Sandbox Code Playgroud)
(当然上面的伪代码不是合法的python)(itertools
想到这种事情,但我不太清楚这个模块.)
编辑
一个(非常简单)的例子,我认为一段时间的理解是有用的将是:
dt=0.05
t=0
mytimes=[]
while t<maxtime:
mytimes.append(t)
t+=dt
Run Code Online (Sandbox Code Playgroud)
这可以转化为:
dt=0.05
t=0
nsteps=maxtime/dt
mytimes=[]
for t in (i*dt for i in xrange(nsteps)):
mytimes.append(t)
Run Code Online (Sandbox Code Playgroud)
可以写成(复合)列表理解:
nsteps=maxtime/dt
mytimes=[t for t in (i*dt for i in xrange(nsteps)]
Run Code Online (Sandbox Code Playgroud)
但是,我认为,while循环是MUCH更容易阅读(而不是有索引错误)另外,如果你的对象(DT)支持"+"而不是"*"?如果maxtime
循环的每次迭代以某种方式改变,可能会发生更复杂的例子......
我想创建一个看起来像这样的for循环:
for x in range(0, 1, 0.1):
print(x)
Run Code Online (Sandbox Code Playgroud)
显然它会抛出这个错误:
回溯(最近调用最后一次):文件"",第1行,in in in range(0,1,0.1):TypeError:'float'对象不能解释为整数
所以在python 3.6中有一种方法可以创建一个带浮点的for循环吗?
我试图在python中找到数字的标准偏差.这是一个入门级编程类,所以我避免尝试使用函数,因为它们还没有被引入.
这个程序允许我在列表中添加数字,分析所述列表,然后显示平均值,最小值,最大值,STDev等.我已成功显示除STDev之外的所有内容,我不断得到的错误是浮动对象不可迭代.这是相关部分的代码:
elif (menuchoice == 4):
sum = 0.0
print("std deviation")
stdev = 0.0
for i in range(listcount):
scorenum4 = eval(scorenum[i])
scoreaverage2 += scorenum4
scoreaverage2 /= listcount
for i in range(listcount):
stdev = []
scorenum3 = eval(scorenum[i])
stdev += (scorenum3 - scoreaverage2)**2
dev = sqrt((stdev)/listcount-1)
print(dev)
Run Code Online (Sandbox Code Playgroud)
任何帮助都会是geat,谢谢.
- 自我编辑 - 我刚从我的for循环中删除了stdev = [],不知道为什么它在那里 - 我现在得到一个答案,但它在数学上是关闭的
如何获得浮动范围列表?为什么以下代码不起作用?
lons = list (range(80.0,90.0,0.05))
print (lons)
Run Code Online (Sandbox Code Playgroud) MATLAB
x = 0:pi/100:2*pi;
y = sin(x);
plot(y)
Run Code Online (Sandbox Code Playgroud)
我认为range()
不能在这里工作,因为它只接受结束参数作为整数但我需要浮点数(0.0; 2*pi
).Python 2.7.11+中的伪代码
import math
x = pseudoRange(0.0, 2*math.pi, math.pi/100);
Run Code Online (Sandbox Code Playgroud)
ceil()
对于整数而言,采取是不实际的.
你怎么能在Python中使用三角函数范围的浮点数?