【发布时间】:2021-11-08 05:08:55
【问题描述】:
所以我写了这段代码,目的是让代码将列表中的不同数字组合在一起,总共n: int组
编辑如果你不明白代码的目的是什么,请查看 cmets,我已经解释过了。谢谢:)
def calcdifference(lst: list):
for x in lst:
return (x -= x)
print(calcdifference(lst=[4,5,6,4,3,2,3,4,5]))
def grouping(lst: list, n: int):
if calcdifference(x) in list == max(calcdifference(x)):
lst.append(x)
print(grouping(lst=[4,5,6,4,3,2,3,4,5]))
n: int 表示一个列表中允许的组数,因此如果 n 为 3,则这些数将分组为 (x,...), (x,..) (x,.. .) 如果 n = 2,则数字将分组为 (x,..),(x,...)。
但是,我的代码在 n 个元素的列表中打印出所有可能的组合。但它不会将数字组合在一起。所以我想要的是:例如,如果输入是
[10,12,45,47,91,98,99]
如果 n = 2,则输出为
[10,12,45,47] [91,98,99]
如果 n = 3,则输出为
[10,12] [45,47] [91,98,99]
我应该对我的代码进行哪些更改?
注意:请不要使用内置函数或导入,因为我希望尽可能少使用内置函数
重要提示:代码应该能够为所提供的每个列表打印n >= len(lst) 组合
【问题讨论】:
-
我想我几个小时前看到了这个问题,我想
n的问题在这里有点解决了。但是,背后的逻辑是什么?为什么不呢,例如当n=2、[10,12,45] [47,91,98,99]不是预期的时候?当n大于len(lst)时会发生什么? -
@j1-lee 是的,我尝试使用不同的方法获得答案,但也失败了,所以我又问了一遍,哈哈。 n 不能大于 len(list),因为列表中的最大分组数等于 len(list)。例如,如果列表中有 5 个元素,则最大分组数为 5。
-
@j1-lee 所以逻辑是对于输入的列表,我们必须将列表中的每个相似数字分开并将它们组合在一起。我尝试使用 calcdifference 来查找列表中每个数字之间的差异。在差异最大的地方,我计划将列表分成 n 组。如果它说 n = 1,那么我会寻找差异最大的组合并将其分开。如果 n = 2,我会在列表中查找 2 个最大的差异并将它们分开。如果 n = 3,那么我会寻找前 3 个最大的差异并将其分开
-
另见:集群。也许像 k-means 之类的东西。
-
这能回答你的问题吗? 1D Number Array Clustering
标签: python list tuples grouping