大佬教程收集整理的这篇文章主要介绍了如何根据特定要求检查列表是否离完美仅一步之遥?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
假设有一个名为 my_List
的列表,它最多可以有 4 个不同的唯一值,例如my_List = ['d','a','d','c','b','b']
。如果在列表的唯一元素中,任何元素至少出现 3 次,另一个元素至少出现 2 次,另一个元素至少出现 1 次,我们称 my_List
为完美列表。例如,根据标准,my_List = ['d','b']
是完美的,因为出现的次数如下:
'd' = 3 (at least 3 times)
'a' = 2 (at least 2)
'c' = 2 (at least 1)
'b' = 2 (at least 2)
因此满足至少 3、2 和 1 次重复的要求,而 another_List = ['d','b']
并不完美,因为:
'd' = 3
'a' = 1
'c' = 1
'b' = 1
所以不存在 3,2,1 的要求。请注意,订单无关紧要。在another_List
中,如果我们只加一个'a'或一个'c'或一个'b',那么它就会变得完美;也就是说,离完美只有一步之遥。我正在寻找一个函数,它接受一个列表并返回 True
如果列表离变得完美只有一步之遥;否则,它返回 False
。我的编码如下:
def fun(some_List):
unique = List(set(some_List))
dict = {}
for i in unique:
dict[i] = unique.count(i)
counts = List(dict.values())
它会找到列表中唯一元素的数量,但我需要帮助才能完成该功能,以根据上述说明检查列表是否离完美仅一步之遥。
您可以使用collections.Counter
:
import collections
def almost_perfect(d):
r = collections.Counter(d)
c = {b:a for a,b in r.items()}
k = [i for i in range(1,4) if i not in c]
return len(k) == 1 and (k[0]+1 in c or any(i+1 == k[0] and sum(j == i for j in r.values()) > 1 for i in c))
vals = ['d','a','d','c','b']
vals1 = ['a','b','d']
vals2 = ['d','c']
print(almost_perfect(vals))
print(almost_perfect(vals1))
print(almost_perfect(vals2))
输出:
True
True
False
以上是大佬教程为你收集整理的如何根据特定要求检查列表是否离完美仅一步之遥?全部内容,希望文章能够帮你解决如何根据特定要求检查列表是否离完美仅一步之遥?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。