Python 严格增加列表中相邻元素之间的差异
编写一个函数expandingl,该函数以整数l的列表作为输入,如果每个相邻元素对之间的绝对差严格增加,则返回True 我试图执行这段代码,但对于某些列表,这并没有返回正确的值 def扩展: 对于0范围内的i,lenl-3: 如果absl[i+2]-l[i+1]>absl[i+1]-l[i]: 答案=正确 其他: 答案=错误 回覆Python 严格增加列表中相邻元素之间的差异,python,python-3.x,Python,Python 3.x,编写一个函数expandingl,该函数以整数l的列表作为输入,如果每个相邻元素对之间的绝对差严格增加,则返回True 我试图执行这段代码,但对于某些列表,这并没有返回正确的值 def扩展: 对于0范围内的i,lenl-3: 如果absl[i+2]-l[i+1]>absl[i+1]-l[i]: 答案=正确 其他: 答案=错误 回覆 展开[1,3,7,2,-3]应为False,但输出为True。使用临时变量存储差异,并在达到非递增差异后退出 def扩展: dif=absl[1]-l[0] 对于范围
展开[1,3,7,2,-3]应为False,但输出为True。使用临时变量存储差异,并在达到非递增差异后退出 def扩展: dif=absl[1]-l[0] 对于范围1中的i,lenl-1: 温度=absl[i+1]-l[i] 非递增差异、收益 如果温度
另一个使用迭代器的解决方案: 来自itertools进口T恤、islice、星图 从操作员导入lt,子 def pairwisex: a、 b=teex,2 返回zipa,Islicec,1,无 a=[1,3,7,2,-3] pairs=pairwisea这将是一个[0]、一个[1]、一个[1]、一个[2]、。。。 下一步将生成结果absa[1]-a[0],absa[2]-a[1]。。。 差异=映射Abs、starmapsub、成对 这将是absa[2]-a[1]>absa[1]-a[0],absa[3]-a[2]>absa[2]-a[1]。。。 cmp=starmaplt,成对差异 如果cmp中的所有项目都评估为真,则差异将严格增加。。。 结果=allcmp 打印结果
此类输入的输出为False这是另一个使用迭代器的解决方案: 来自itertools进口T恤、islice、星图 从操作员导入lt,子 def pairwisex: a、 b=teex,2 返回zipa,Islicec,1,无 a=[1,3,7,2,-3] pairs=pairwisea这将是一个[0]、一个[1]、一个[1]、一个[2]、。。。 下一步将生成结果absa[1]-a[0],absa[2]-a[1]。。。 差异=映射Abs、starmapsub、成对 这将是absa[2]-a[1]>absa[1]-a[0],absa[3]-a[2]>absa[2]-a[1]。。。 cmp=starmaplt,成对差异 如果cmp中的所有项目都评估为真,则差异将严格增加。。。 结果=allcmp 打印结果
此类输入的输出为假您的逻辑有点错误。一旦你知道一个项目出了问题,你应该为整个列表回答False def扩展: 对于0范围内的i,lenl-3:
如果absl[i+2]-l[i+1]您的逻辑有点错误。一旦你知道一个项目出了问题,你应该为整个列表回答False def扩展: 对于0范围内的i,lenl-3: 如果absl[i+2]-l[i+1] 一旦你知道一个项目出了问题,你就应该在不等待的情况下为整个列表回答False,这样其他对就不会改变答案 还要注意从range0,lenl-3到range0,lenl-2的变化。原始实现缺少最后一对列表元素 一旦你知道一个项目出了问题,你就应该在不等待的情况下为整个列表回答False,这样其他对就不会改变答案
还要注意从range0,lenl-3到range0,lenl-2的变化。原始实现缺少最后一对列表元素。我建议在迭代器中编写条件,然后传递给它,以确保在第一次出现非扩展差异时,迭代停止并返回False 下面是它的外观: def扩展: 对于范围1中的i,lenl-1,不返回anyabsl[i-1]-l[i]>=absl[i]-l[i+1]
我建议在一个迭代器中编写条件,然后传递给它,以确保在第一次出现非扩展差异时,迭代停止并返回False 下面是它的外观: def扩展: 对于范围1中的i,lenl-1,不返回anyabsl[i-1]-l[i]>=absl[i]-l[i+1] Debkanta Mondal编写的代码 蟒蛇3 PrintExpansing[1,3,7,2,-3]由Debkanta Mondal编写的代码 蟒蛇3 printexpan
丁[1,3,7,2,-3]我不认为这符合OP的要求。问题是找出相邻元素之间的绝对差是否严格增加,但这只是找出列表元素的绝对值是否严格增加。它在x=np.数组[1,3,7,2,-4]上失败。绝对差异为[2,4,5,6],但您的实现的计算结果为False。我不认为这符合OP的要求。问题是找出相邻元素之间的绝对差是否严格增加,但这只是找出列表元素的绝对值是否严格增加。它在x=np.数组[1,3,7,2,-4]上失败。绝对差异为[2,4,5,6],但您的实现的计算结果为False。我认为这个答案将受益于一些代码注释。读者可能不熟悉您正在使用的itertools和运算符函数。我认为这个答案将从一些代码注释中受益。读者可能不熟悉您正在使用的itertools和运算符函数。
def expanding(l):
for i in range(0,len(l)-2):
if (abs(l[i+2]-l[i+1])>abs(l[i+1]-l[i])):
Answer=True
else:
Answer=False
return Answer
return Answer
expanding([1,3,7,2,-3])
def expanding(l):
dif=[]
for x,y in zip(l,l[1:]):
diff=abs(y-x)
dif.append(diff)
return all(i<j for i,j in zip(dif,dif[1:]))