Python 如何编写函数来检查集合是否连续?
给定一组整数,如果该集合是连续的(它只包含顺序整数),则返回TruePython 如何编写函数来检查集合是否连续?,python,set,Python,Set,给定一组整数,如果该集合是连续的(它只包含顺序整数),则返回True 您可以使用min和max功能 set1 = {1, 2, 3, 5} set2 = {9, 8, 7, 10, 11, 12} x1 = len(set1) == max(set1)-min(set1)+1 # False x2 = len(set2) == max(set2)-min(set2)+1 # True numpy有一个计算数组中值差的函数。对集合进行排序,使最接近的数字是最接近的,取差值,然后查看它们是否
您可以使用
min
和max
功能
set1 = {1, 2, 3, 5}
set2 = {9, 8, 7, 10, 11, 12}
x1 = len(set1) == max(set1)-min(set1)+1 # False
x2 = len(set2) == max(set2)-min(set2)+1 # True
numpy
有一个计算数组中值差的函数。对集合进行排序,使最接近的数字是最接近的,取差值,然后查看它们是否都是1
>>> import numpy as np
>>>
>>> def continuous_set(s):
... arr = np.array(sorted(s))
... return (np.diff(arr)==1).all()
...
>>> set1 = {1, 2, 3, 5}
>>> set2 = {9, 8, 7, 10, 11, 12}
>>>
>>> print (continuous_set(set1)) #returns False
False
>>> print (continuous_set(set2)) #returns True
True
到目前为止你尝试了什么?这是否回答了你的问题?你能想出一个数学规则,告诉你如果集合有这个属性,它应该有多少个元素,用最小值和最大值来表示吗?我很高兴听到你想写一个函数,但这是一个问答网站。哇。这真的很有效。
>>> import numpy as np
>>>
>>> def continuous_set(s):
... arr = np.array(sorted(s))
... return (np.diff(arr)==1).all()
...
>>> set1 = {1, 2, 3, 5}
>>> set2 = {9, 8, 7, 10, 11, 12}
>>>
>>> print (continuous_set(set1)) #returns False
False
>>> print (continuous_set(set2)) #returns True
True