【问题标题】:Python 2.7 - Can't get full list/array from my for loopPython 2.7 - 无法从我的 for 循环中获取完整列表/数组
【发布时间】:2017-09-23 03:34:26
【问题描述】:

我正在开发一个可以卷积两个列表的程序,我需要从头开始。我的 for 循环有正确的输出,但是我无法返回它,因为附加的输出只会保存 for 循环的最后一次迭代。我已经尝试过枚举、追加、扩展和其他几个,我只是不太了解 python,无法从我的 for 循环中获取一个列表或理想的整数数组。 将 numpy 导入为 np

#def conv395(x,h):
    #Function to convolve x input signal and h impulse response

h = [1,2,-1,1]
x = [1,1,2,1,2,2,1,1]    
M = len(h)-1
L = len(x)
Ly = M+L


def ConV(x,h,n):
    y = (h[m]*x[(n-1)-m])
    return (y)

for n in range(0,Ly+1):

    mx = n-L+1

    if mx < 1:
        n = n+1
        #print("SPACE")
        Y1 = 0

        if n <= M+1:

            Y = []
            for m in range(n):
                #print(n) 

                y = ConV(x,h,n)
                Y1 = y + Y1

            Y.append(Y1)
            print Y, 

输出

[1] [3] [3] [5]

然而

Y type=list size=1 Value=[5]

我需要值来匹配列表或数组中的输出。 任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: python arrays for-loop output nested-loops


    【解决方案1】:

    可能是这样的吗?

    h = [1,2,-1,1]
    x = [1,1,2,1,2,2,1,1]    
    M = len(h)-1
    L = len(x)
    Ly = M+L
    LOL = []
    
    def ConV(x,h,n):
        y = (h[m]*x[(n-1)-m])
        return (y)
    
    for n in range(0,Ly+1):
    
        mx = n-L+1
    
        if mx < 1:
            n = n+1
            #print("SPACE")
            Y1 = 0
    
            if n <= M+1:
    
                Y = []
                for m in range(n):
                    #print(n) 
    
                    y = ConV(x,h,n)
                    Y1 = y + Y1
    
                Y.append(Y1)
                LOL.append(Y)
                print Y, 
    
    print LOL
    

    【讨论】:

    • #facepalm --- 是的,这行得通...smh*** 非常感谢,我尝试了几乎所有的变体来获得这个输出,哈哈!这是小事!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 2018-05-08
    • 2019-03-06
    • 2017-09-23
    • 1970-01-01
    相关资源
    最近更新 更多