2024-03-28 10:18:55 发布
网友
寻找一个奇特的单线解决方案,找到一个列表中的项目对使用列表理解。你知道吗
我有一些代码可以找到乘法,但不知道如何将这些乘法拆分成对。你知道吗
lst = [1,2,4,2,2,3,3,1,1,1,2,4,3,4,1] len(set([x for x in lst if lst.count(x) > 1]))
上面的代码返回4。答案应该是6对、[1,1,1,1,1] = 2、[2,2,2,2] = 2、[3,3,3] = 1和[4,4,4] = 1。你知道吗
4
6
[1,1,1,1,1] = 2
[2,2,2,2] = 2
[3,3,3] = 1
[4,4,4] = 1
您可以执行以下操作(如果我正确理解了您的配对方法):
lst = [1,2,4,2,2,3,3,1,1,1,2,4,3,4,1] the_dict = {x: int((lst.count(x)/2)) for x in lst} print(sum(the_dict.values())) > 6 print(the_dict) > {1: 2, 2: 2, 4: 1, 3: 1}
这将生成一个包含所有对计数的字典,然后可以对字典中的值求和以获得对计数。如果需要,还可以使用字典,其中包含每个值的对计数。你知道吗
没有其他中间变量的一条线性关系是:
sum(lst.count(x)//2 for x in set(lst))
它在set(lst)上循环,其中包含lst中所有不同的数字,并将它们的对计数相加。你知道吗
set(lst)
lst
另一种方法是使用[Python 3.Docs]: class collections.Counter([iterable-or-mapping]):
>>> from collections import Counter >>> >>> lst = [1, 2, 4, 2, 2, 3, 3, 1, 1, 1, 2, 4, 3, 4, 1] >>> >>> c = Counter(lst) >>> c Counter({1: 5, 2: 4, 4: 3, 3: 3}) >>> >>> sum(item // 2 for item in c.values()) 6
以及一行等价物:
>>> sum(item // 2 for item in Counter(lst).values()) 6
您可以执行以下操作(如果我正确理解了您的配对方法):
这将生成一个包含所有对计数的字典,然后可以对字典中的值求和以获得对计数。如果需要,还可以使用字典,其中包含每个值的对计数。你知道吗
没有其他中间变量的一条线性关系是:
它在
set(lst)
上循环,其中包含lst
中所有不同的数字,并将它们的对计数相加。你知道吗另一种方法是使用[Python 3.Docs]: class collections.Counter([iterable-or-mapping]):
以及一行等价物:
相关问题 更多 >
编程相关推荐