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

Python函数内调用列表生成函数时报Cannot choose from empty sequence错误

问题根因
  • fill_list函数首行的random_list=[]会生成一个新的局部空列表,覆盖了传入的参数引用,后续所有添加元素的操作都是在这个局部列表上执行,外部传入的原列表始终为空,没有被修改。
  • win_condition中调用fill_list(the_list)时没有接收函数返回的填充完成的列表,仍在用原空列表调用random.choice,因此触发空序列选择错误。
  • 原代码缺少import random语句,也会导致运行报错。
修复方案

推荐采用直接接收返回值的写法,逻辑更清晰:

import string
import random

def fill_list():
    random_list = []
    # 生成10个数字
    for i in range(10):
        n = random.randint(1,10)
        random_list.append(n)
    # 生成5个字母
    for j in range(5):
        n = random.choice(string.ascii_letters)
        random_list.append(n)
    return random_list

def win_condition():
    # 直接接收填充好的列表
    the_list = fill_list()
    win_list = []
    for i in range(4):
        n = random.choice(the_list)
        win_list.append(n)
    return win_list

如果需要保留传参修改原列表的逻辑,可修改为如下写法:

import string
import random

def fill_list(random_list):
    # 删除局部列表初始化语句,直接操作传入的列表
    for i in range(10):
        n = random.randint(1,10)
        random_list.append(n)
    for j in range(5):
        n = random.choice(string.ascii_letters)
        random_list.append(n)

def win_condition():
    the_list = []
    fill_list(the_list)
    win_list = []
    for i in range(4):
        n = random.choice(the_list)
        win_list.append(n)
    return win_list

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:48:00