【问题标题】:How to append a loop value to a list?如何将循环值附加到列表中?
【发布时间】:2019-05-18 09:59:37
【问题描述】:

我不明白为什么输出不是列表……我是不是添加错误了?

from numpy import *

b=0.1;g=0.5;l=632.8;p=2;I1=[I];I=0

for a in arange(-0.2,0.2,0.001):

    I+=b**2*(sin(pi/l*b*sin(a)))**2/(pi/l*b*sin(a))**2*(sin(p*pi /l*g*sin(a)))**2/(sin(pi/l*g*sin(a)))**2

I1.append(I)  

print (I)

output: 15.999998678557855

【问题讨论】:

  • 第二行已经不行了。此外,您正在打印I,这是一个数字。你的意思是打印I1
  • b=0.1;g=0.5;l=632.8;p=2;I1=[I];I=0 很丑。 b, g, l, p, I1, I = 0.1, 0.5, 632.8, 2, [I], 0 也很丑,但如果你坚持把所有东西都塞进一行会更好。
  • @nnnmmm 为什么第二行不起作用?无论如何你是对的,我想打印 I1!哈哈哈

标签: python-3.x for-loop


【解决方案1】:

您的代码中有几个错误、缺少导入等。请参阅代码中的 cmets 以获取修复:

from numpy import arange
from math import sin,pi

b = 0.1
g = 0.5
l = 632.8 
p = 2
I = 0          # you need to specify I 
I1 = [I]       # before you can add it

for a in arange(-0.2,0.2,0.001):

    I += b**2 * (sin(pi/l*b*sin(a)))**2 / (pi/l*b*sin(a))**2 * (sin(p*pi /l*g*sin(a)))**2 / (sin(pi/l*g*sin(a)))**2

    I1.append(I)  # by indenting this you move it _inside_ the loop 

print (I)
print (I1)

输出:

15.999998678557855
[0, 0.03999999014218294, 0.07999998038139602, 0.1199999707171788, ....] # shortened

【讨论】:

    猜你喜欢
    • 2015-04-27
    • 2017-05-30
    • 2021-10-31
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    相关资源
    最近更新 更多