我怎么能在python中编码循环

时间:2018-01-03 16:00:15

标签: python python-3.x

我在python中遇到循环问题。我想用这个算法创建一个列表x [X0,X1,.... Xn]:

X1=X0-(5+X0*2); X2=X1-(5+X1*2);.....

我试试这个,但结果不正确。

a=list(np.empty(10))
a[0]=1
for i in range(10):
        a.append(a[i]-(5+a[i]*2))
        print (a [i])

如果手动迭代结果,则给出:

[1,-6,1,-6, ....]

但是在循环之后它给出了:

[1,-1.29074375768e-231,2.19254982219e-314,.....]

循环在C中很容易,但如果你有想法,我不理解Python中的功能吗?

4 个答案:

答案 0 :(得分:1)

除了单个元素之外,没有理由开始列表。在C中,您必须预先确定列表中需要多少元素,但在Python中并非如此,因此执行list(np.empty(10))会创建一个列表,其中包含十个无意义的元素,这些元素只会妨碍您。

a = [1] # This creates a list that starts off with the element 1.
for i in range(10):
    a.append(a[i] - (5 + a[i] * 2))
    print (a[i])

答案 1 :(得分:1)

问题在于list(np.empty(10))没有按照您的想法行事。您希望它返回一个包含10个零的列表,但它实际上会返回一个包含10个“随机”数字的列表(实际上,它会返回10个未初始化值的列表)。

来自numpy docs

  

,与零不同,不会将数组值设置为零,并且可能   因此速度要快一些。另一方面,它需要   用户手动设置数组中的所有值,应该使用   谨慎。

(强调我的)

相反,您应该只创建一个包含单个元素的列表1,然后从那里继续:

a = [1]
for i in range(10):
    a.append(a[i] - (5 + a[i] * 2))
print(a)
# [1, -6, 1, -6, 1, -6, 1, -6, 1, -6, 1]

答案 2 :(得分:0)

我建议你阅读python中的函数,列表和for循环,从你的问题来看,你似乎并不理解它们。

您的代码目前无法运行的原因有多种,但它们都很容易修复。

首先,您启动一​​个带有numpy列表的列表,这是不必要的。

a = list(np.empty(10))

可以简单地成为

a = list()

甚至更简单,

a = []

接下来,不是错误,而是建议,

a[0] = 1

可以删除,而是在初始化列表时,将其中一个作为第一项

a = [1]

之后,您的代码应该可以运行。总结如下:

n = 10 # or whatever number you want
a = [1]
for i in range(n - 1):
    a.append(a[i] - (5 + a[i] * 2))

如果你想把它作为一个功能:

def formula_list(n):
    a = [1]
    for i in range(n - 1):
        a.append(a[i] - (5 + a[i] * 2))
    return a

答案 3 :(得分:0)

他们安排你的等式会不断打印-6和1,因此:

a = [1]

iti = 0

while(True):
    thing = a[iti]-(5+(a[iti]*2))
    a.append(thing)
    iti+=1
    print(thing)

我选择不使用for循环来显示一个更容易理解的例子,但如果你愿意,你仍然可以使用它。