我之前的问题没有被理解,所以我重新措辞并发布这个问题。我有一个(class, n_class_examples)
的元组列表,如下所示:
my_list = (0, 126), (1, 192), (2, 330), (3, 952) ]
因此,我对生成一个函数很感兴趣,它接收这样一个列表,将每个元组与所有其他元组进行比较,并在每种情况下报告哪个类的样本数较少(min_class
),哪个类的样本数较多(max_class
)。
def get_min_max_class(current_list):
for tn, tn+1: # tn -> 1-tuple, tn+1 any other tuple not tn
if tn[1] < tn+1[1]
smaller_class = tn[0]
larger_class = tn+1[0]
smaller_class = tn+1[0]
larger_class = tn[0]
return # smaller, larger of the 2 compared in each case
这样一来:
get_min_max_class(my_list)
# would perform the comparison like so:
(0, 126) v (1, 192) -> min_class = 0, max_class = 1 # in this case
(0, 126) v (2, 330) -> min_class = 0, max_class = 2 # and in this case
(0, 126) v (3, 952) -> min_class = 0, max_class = 3 # and here ..
(1, 192) v (2, 330) -> min_class = 1, max_class = 2 # ...
(1, 192) v (3, 952) -> min_class = 1, max_class = 3
(2, 330) v (3, 952) -> min_class = 2, max_class = 3
请原谅我对函数的定义,但我希望函数能迭代地比较这些项目,每次都报告哪个更大,哪个更小。
2条答案
按热度按时间2skhul331#
迭代
itertools.combintions
生成的对列表,分别使用min
和max
处理每个对。如果要返回结果列表,而不是简单地打印报告,则必须定义要返回的确切内容。
iezvtpos2#
Python的sorted()、min()和max()函数的第二个参数是一个"key",它让我们可以使用lambda函数来指定如何计算不同对象的排序。在本例中,我们希望根据第二个元素的值对元组进行排序,并返回相应的第一个值。
所以,如果我想在你的情况下"最大"我会做:
lambda表达式,如果你还不知道的话,就是说"根据你在x [1]找到的任何东西对列表中的项x排序"。然后,取排序列表的最后一个元素,得到样本最多的类,或者确切地说,不管它是什么。
我希望这对你有帮助!