Python如何判断拆分出的x_list、y_list中是否存在重叠值
检查列表重复值的实现方法
方法1:快速判断是否存在重复值(无需知道具体重复内容)
利用Python集合自动去重的特性,对比原列表和转成集合后的长度即可:
def has_duplicate(lst: list) -> bool: # 长度不一致说明存在被集合去重的重复元素 return len(lst) != len(set(lst)) # 调用示例 print(has_duplicate(x_list)) # 输出:True,x_list存在重复值13 print(has_duplicate(y_list)) # 输出:True,y_list存在重复值17
方法2:获取具体的重复值
如果需要知道哪些值出现了多次,可以使用collections.Counter统计元素出现频次:
from collections import Counter def get_duplicate_values(lst: list) -> list: count_result = Counter(lst) # 筛选出出现次数大于1的元素 return [val for val, cnt in count_result.items() if cnt > 1] # 调用示例 print(get_duplicate_values(x_list)) # 输出:[13] print(get_duplicate_values(y_list)) # 输出:[17]
补充:直接判断原始区间是否存在重叠
如果你的最终需求是校验原始区间列表是否存在重叠区间,不需要单独提取左右端点列表,可以直接排序后遍历校验:
def has_overlapping_intervals(intervals: list) -> bool: # 按区间左端点升序排序 intervals.sort(key=lambda x: x[0]) for i in range(1, len(intervals)): # 后一个区间的左端点小于等于前一个区间的右端点,说明存在重叠 if intervals[i][0] <= intervals[i-1][1]: return True return False # 调用示例 print(has_overlapping_intervals(List)) # 输出:True
内容的提问来源于stack exchange,提问作者Ya3goobs
相关产品推荐
相关产品推荐

