我是Python的新手,所以我不清楚它的某些逻辑。
我在创建一个函数时遇到麻烦,该函数使用以下条件确定值:
数据为:
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]
。
如何解决呢?非常感谢您的帮助。
答案 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