You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python/Pandas实现:判断数字是否在列表/Series中,不存在则返回下一个最大值

实现数字存在性判断及返回下一个最大值的方法

普通列表实现

针对普通列表,先确保列表有序,再通过遍历找到符合要求的结果:

nums = [1,2,3,5,7,8,20]

def coerce_num(x, nums_list):
    # 先将列表升序排序,避免无序导致逻辑错误
    sorted_nums = sorted(nums_list)
    if x in sorted_nums:
        return "yes"  # 若需要返回数字本身,可替换为 return x
    # 找到第一个大于x的元素
    for num in sorted_nums:
        if num > x:
            return num
    # 当x大于列表所有元素时,返回最大值
    return sorted_nums[-1]

# 测试用例
print(coerce_num(4, nums))   # 输出: 5
print(coerce_num(9, nums))   # 输出: 20
print(coerce_num(25, nums))  # 输出: 20
print(coerce_num(7, nums))   # 输出: yes

Pandas Series/DataFrame 实现

利用Pandas的排序和筛选功能,可高效处理Series或DataFrame列:

Series 处理

import pandas as pd

nums_series = pd.Series([1,2,3,5,7,8,20])

def coerce_num_pandas(x, series):
    # 对Series升序排序并重置索引
    sorted_series = series.sort_values().reset_index(drop=True)
    if x in sorted_series.values:
        return "yes"
    # 筛选所有大于x的元素,取第一个(即最小的大于x的数)
    greater_values = sorted_series[sorted_series > x]
    if not greater_values.empty:
        return greater_values.iloc[0]
    # 若x大于所有元素,返回最大值
    return sorted_series.iloc[-1]

# 测试用例
print(coerce_num_pandas(4, nums_series))   # 输出: 5
print(coerce_num_pandas(15, nums_series))  # 输出: 20
print(coerce_num_pandas(30, nums_series))  # 输出: 20

DataFrame 列处理

直接将DataFrame的列传入上述函数即可:

df = pd.DataFrame({'values': [1,2,3,5,7,8,20]})
print(coerce_num_pandas(9, df['values']))  # 输出: 20

内容的提问来源于stack exchange,提问作者John Conor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 17:20:30