鱼C论坛

 找回密码
 立即注册
查看: 1162|回复: 2

[已解决]关于python中的loop问题

[复制链接]
发表于 2021-7-21 10:32:40 | 显示全部楼层 |阅读模式
20鱼币
1.给定一个数字列表,您可以计算一个包含每个元素与其后续元素之间差异的新列表。 例如,给定 [1, 2, 5, 3],差异列表将是 [1, 3, -2]。 自然地,新列表比原始列表少一个元素。

编写一个函数 difference(numbers) 来计算参数 numbers 的差异列表。

测试:
assert difference([1, 2, 5, 3]) == [1, 3, -2]
assert difference([3, 2, 567, 2, 45, 3, 7, 5]) == [-1, 565, -565, 43, -42, 4, -2]

2.编写另一个函数 final_difference(numbers) 重复应用差异(数字)直到只剩下 1 个数字。 然后返回该号码。
测试:
assert final_difference([1, 2, 5, 3]) == -7
assert final_difference([3, 2, 567, 2, 45, 3, 7, 5]) == -13382

好兄弟请问下这两个题怎么写,困了好久了。
最佳答案
2021-7-21 10:32:41
  1. def difference(numbers):
  2.     new_list = []
  3.     length = len(numbers)
  4.     for i in range(1,length):
  5.         new_list.append(numbers[i]-numbers[i-1])
  6.     return new_list


  7. def final_difference(numbers):
  8.     new_list = []
  9.     length = len(numbers)
  10.     if length == 1:
  11.         return numbers[0]
  12.     for i in range(1,length):
  13.         new_list.append(numbers[i]-numbers[i-1])
  14.     return difference(new_list)
复制代码

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-21 10:32:41 | 显示全部楼层    本楼为最佳答案   
  1. def difference(numbers):
  2.     new_list = []
  3.     length = len(numbers)
  4.     for i in range(1,length):
  5.         new_list.append(numbers[i]-numbers[i-1])
  6.     return new_list


  7. def final_difference(numbers):
  8.     new_list = []
  9.     length = len(numbers)
  10.     if length == 1:
  11.         return numbers[0]
  12.     for i in range(1,length):
  13.         new_list.append(numbers[i]-numbers[i-1])
  14.     return difference(new_list)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-21 10:58:57 | 显示全部楼层

参考代码:

  1. #1
  2. difference = lambda numbers: [numbers[i+1] - numbers[i] for i in range(len(numbers)-1)]

  3. assert difference([1, 2, 5, 3]) == [1, 3, -2]
  4. assert difference([3, 2, 567, 2, 45, 3, 7, 5]) == [-1, 565, -565, 43, -42, 4, -2]

  5. #2
  6. def final_difference(numbers):
  7.     result = [numbers[i + 1] - numbers[i] for i in range(len(numbers) - 1)]
  8.     return final_difference(result) if len(result) != 1 else result[0]

  9. assert final_difference([1, 2, 5, 3]) == -7
  10. assert final_difference([3, 2, 567, 2, 45, 3, 7, 5]) == -13382
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-15 02:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表