【发布时间】:2021-11-08 08:43:11
【问题描述】:
所以我写了这段代码来找出数字之间的差异。
def partition(lst: list):
f = []
l = sorted(f)
for i in range(len(lst)):
if i < len(lst)-1:
diff = lst[i+1] - lst[i]
l.append(diff)
else:
return f
它可以工作,但现在我想创建另一个函数grouping 来分隔两个数字之间差异最大的列表。例如,如果这是我的清单
[1,3,5,7,12,14,15]
运行partition(lst)后,我得到了
[2, 2, 2, 5, 2, 1]
所以现在我想让grouping(lst, n) 分隔出差异最大的列表,也就是5,所以我想让grouping 返回
[(1,3,5,7),(12,14,15)]
此外,在grouping(lst,n) 中,还有一个int n,它将确定需要多少个分组。所以基本上,只要 n
为了理解我的意思,所以基本上如果n = 1,我希望grouping(lst,n) 将出现最大差异的数字分开。
如果n = 2,grouping(lst,n) 应该分隔出现前两个最大差异的数字。
如果n = 3, 'grouping(lst,n) 应该分开出现前 3 个最大差异的数字。等等..
这是我目前的代码,包括grouping(lst,n)
def partition(lst: list):
f = []
for i in range(len(lst)):
if i < len(lst)-1:
diff = lst[i+1] - lst[i]
f.append(diff)
else:
return f
print(partition([1,3,5,7,12,14,15]))
def grouping(lst: list, n):
for x in lst:
if partition(x) == max(partition(lst)):
lst.append(x)
我应该在grouping(lst,n) 下写什么才能使它正确?
【问题讨论】:
-
你好,同样的问题在这里stackoverflow.com/questions/54269966/…你可以使用这种方法
-
不是同一个问题。 Bruffff 提出的问题似乎更复杂,因为向列表中添加元素可能会完全改变您拆分它的位置。
-
@MehrdadDolatabadi 是的,这个问题使用了 itertools,我想避免使用它:)。
-
grouping([1,3,5,7,12,14,15], 3)的预期输出是什么? -
预期输出将是 [(1,3,) (5,7) (14,15)]。如果所有的差异都相同,只需将中间的数字分开即可。