使用带有多个变量的循环填充数组(Python中的新变量,C+;+;+;(回到过去))

使用带有多个变量的循环填充数组(Python中的新变量,C+;+;+;(回到过去)),python,arrays,Python,Arrays,基本上,我想做的是在python中创建类似的内容(这是基本思想,而不是实际代码): 检查n是否为偶数 -如果n为偶数,则对于范围(0,n)中的所有i,使用以下公式将值插入数组 -b[n-i]=a[n-i-1]+a[n-i],此值将替换代码上方先前给定的b[]值。 -打印出数组 -填充每个区域后,应用n+=1,i=n+1,然后循环继续 检查n是否为奇数 -相同的过程,除了公式是 -a[n-i]=b[n-i-1]+a[n-i],此值将替换代码上方先前给定的a[]值。 -打印出数组 -填充每个区域后,

基本上,我想做的是在python中创建类似的内容(这是基本思想,而不是实际代码):

检查n是否为偶数 -如果n为偶数,则对于范围(0,n)中的所有i,使用以下公式将值插入数组 -b[n-i]=a[n-i-1]+a[n-i],此值将替换代码上方先前给定的b[]值。 -打印出数组 -填充每个区域后,应用n+=1,i=n+1,然后循环继续

检查n是否为奇数 -相同的过程,除了公式是 -a[n-i]=b[n-i-1]+a[n-i],此值将替换代码上方先前给定的a[]值。 -打印出数组 -填充每个区域后,应用n+=1,i=n+1,然后循环继续

此过程将循环并打印每个阵列,然后继续,阵列基本上如下所示: b=[1,4,6,4,1],a=[15,10,5,1],b=[1,6,15,20,20,15,6,1],等等

这是我目前拥有的代码,但是我得到了一个“超出范围”的错误



整个代码中的随机打印是为了测试,看看它是否进入了流程。以前的代码中有,我只是还没有删除它们


希望您能帮助我,我在网上找不到任何关于不断增加数组大小并同时填充数组的循环的信息。

很抱歉,在示例代码中遇到了麻烦。从您的描述中,我可以看出您想要生成Pascal三角形。这里有一个简短的片段可以做到这一点

a = [1, 1]
for _ in range(10):
    a = [1] + [x+y for (x,y) in zip(a[:-1], a[1:])] + [1]
    print a

a[:-1]
表示除最后一个元素外的整个数组,
a[1:://code>表示除第一个元素外的整个数组
zip
将每个数组中的第一个元素组合成一个元组,依此类推。剩下的就是添加它们,并在行外部填充一个<代码>.
用于告诉Python,我不关心这个变量-如果您想明确表示除了流控制之外没有使用范围值,那么这个变量很有用。

我认为Maria的答案是完美的。如果你想从你的代码开始,你可以重写你的代码如下,以得到类似的结果。仅供参考

n = 3
b = [1, 2, 1]

while 1 < n < 10:
    if n % 2 == 0:
        print("even")
        b = [0] * (n + 1)
        for i in range(0, n + 1):
            if i == 0:
                b[i] = a[0]
            elif i == n:
                b[i] = a[i - 1]
            else:
                b[n - i] = a[i - 1] + a[i]
    else:
        print("odd")
        a = [0] * (n + 1)
        for i in range(0, n + 1):
            if i == 0:
                a[i] = b[0]
            elif i == n:
                a[i] = b[i - 1]
            else:
                a[i] = b[i - 1] + b[i]

    if n % 2 == 0:
        print(b)
    else:
        print(a)

    n += 1
    print("loop")
n=3
b=[1,2,1]
而1
谢谢,我来试一试,是的,那是帕斯卡的三角形。好眼力:PIt的效果非常好,直到达到35,然后打印2319959400L,并在数字超过该点后继续打印L。思想?我只将范围设置为100,我希望它尽可能长时间工作。显然,另一种语言会有所帮助,因为python是32位的,而不是64位的;但是,如果是这样的话,我不确定应该使用什么语言。
a = [1, 1]
for _ in range(10):
    a = [1] + [x+y for (x,y) in zip(a[:-1], a[1:])] + [1]
    print a
n = 3
b = [1, 2, 1]

while 1 < n < 10:
    if n % 2 == 0:
        print("even")
        b = [0] * (n + 1)
        for i in range(0, n + 1):
            if i == 0:
                b[i] = a[0]
            elif i == n:
                b[i] = a[i - 1]
            else:
                b[n - i] = a[i - 1] + a[i]
    else:
        print("odd")
        a = [0] * (n + 1)
        for i in range(0, n + 1):
            if i == 0:
                a[i] = b[0]
            elif i == n:
                a[i] = b[i - 1]
            else:
                a[i] = b[i - 1] + b[i]

    if n % 2 == 0:
        print(b)
    else:
        print(a)

    n += 1
    print("loop")