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

Python函数结果传递方法及素数筛选列表为空问题求助

问题解答

一、如何将一个函数的结果传递给另一个函数

你当前代码里两次调用get_list_of_int_numbers(n1),会生成两个完全不同的随机列表。正确做法是先把第一个函数的结果存入变量,再将这个变量传给第二个函数,既保证数据一致,也避免重复执行随机生成逻辑:

def main() -> None:
    n1 = random.randint(10, 100)
    # 存储第一个函数的结果
    original_list = get_list_of_int_numbers(n1)
    print(original_list)
    # 将变量传入第二个函数
    print(get_second_list_based_on_old_one_with_prime_digits(original_list))

二、素数列表为空的原因及修复

你的代码存在两个关键错误,导致第二个列表始终为空:

  1. 判断条件逻辑错误:get_prime_digits(n)返回布尔值True/False,但你在列表推导式里用n == get_prime_digits(n)做判断——整数和布尔值永远不可能相等(比如素数11和True比较结果为False,因为True等价于整数1),所以条件永远不成立。应直接用get_prime_digits(n)作为判断条件。
  2. 素数列表语法错误:get_prime_digits函数里的素数列表最后一个元素是97.,这是浮点数,而你生成的列表元素都是整数,整数和97.0无法相等,需去掉末尾的点,改为97。

另外,get_prime_digits函数名有误导性,它实际是判断数字是否为素数,建议更名为is_prime以明确功能。

修正后的完整代码

import random

def get_list_of_int_numbers(n: int):
    # 若你想生成n个10-100的随机整数,可改用下面的写法
    # list1 = [random.randint(10, 100) for _ in range(n)]
    # 保留你原逻辑(生成随机长度列表后重复n次)
    list1 = [random.randint(10, 100) for x in range(random.randint(10, 100))] * n
    return list1


def is_prime(n: int) -> bool:
    # 修正97后的点,改为整数
    return n in [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,
                 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]


def get_second_list_based_on_old_one_with_prime_digits(expression: list) -> list:
    # 直接用is_prime(n)作为判断条件
    list2 = [n for n in expression if is_prime(n)]
    return list2


def main() -> None:
    n1 = random.randint(10, 100)
    original_list = get_list_of_int_numbers(n1)
    print("原始列表:", original_list)
    print("素数列表:", get_second_list_based_on_old_one_with_prime_digits(original_list))


if __name__ == '__main__':
    main()

额外说明:如果get_list_of_int_numbers的预期是生成n个10-100的随机数,而非生成随机长度列表再重复n次,将函数内的列表生成式改为[random.randint(10, 100) for _ in range(n)]即可,这更符合常规需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:50:30