如何创建按条件填充创建列表的函数

时间:2020-01-24 14:57:54

标签: python

我是Python的新手,所以我不清楚它的某些逻辑。
我在创建一个函数时遇到麻烦,该函数使用以下条件确定值:

  • 如果列表中的下一个值小于当前值,则它分配0
  • 在其他情况下为-1

数据为: x = [1,2,3,3,2,1]

这是满足条件的解决方案:

y = [None]*(len(x)-1)
for i in range(0, len(y)):
     if x[i] > x[i+1]:
          y[i] = 0
     else:
          y[i] = 1

还有y = [1, 1, 1, 0, 0]

我的问题是扩大规模:我想做一个处理N个输入列表(并输出N个列表)的函数-脚本在下面-我得到以下信息:

def my_function(a):
     ynew = [None]*(len(a)-1)
     for i in range(0, len(ynew)):
          if a[i] > a[i+1]:
               ynew[i] = 1
          else:
               ynew[i] = 0
          return ynew

调用z = my_function(x),z等于[0, None, None, None, None]。 如何解决呢?非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您将在循环内返回列表,因此仅允许一次迭代完成。要解决此问题,请在循环末尾返回。

def my_function(a):
    ynew = [None]*(len(a)-1)
    for i in range(0, len(ynew)):
        if a[i] > a[i+1]:
            ynew[i] = 1
        else:
            ynew[i] = 0
    return ynew

答案 1 :(得分:0)

返回时存在缩进问题,必须将其从循环中取出。另外,为了满足您的条件,必须在ynew中将0和1反转。

Matrix