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

Python条件语句中'in'的用法是否正确?代码运行异常求助

你的代码问题分析&修复方案

嘿,作为Python新手踩这个坑太正常啦!我一眼就瞅出问题所在了——你每次调用a()都会生成一个全新的随机列表!

举个例子,假设你在b()里写了类似这样的代码:

if 2 in a():
    y = [x for x in a() if x ==2][0]

这里你悄悄调用了两次a():第一次是判断2是否在列表里,第二次是去取这个2。但这两次调用生成的是完全不同的随机列表啊!第一次的列表里有2,第二次的可能就没有了,自然拿不到预期的y=2。

修复方法超简单:把生成的列表存成变量,全程用同一个!

修改后的代码可以这样写:

from random import choice, sample

def a():
    # 把变量名改成my_sample,避免和函数名a混淆,可读性更好
    my_sample = sample(range(0,5),2)
    my_sample.append(1)
    return my_sample

def b():
    # 先调用一次a(),把生成的列表存下来,后面都用这个固定的列表
    target_list = a()
    print(f"当前生成的列表是:{target_list}")  # 可以打印出来验证
    if 2 in target_list:
        y = 2
    elif 3 in target_list:
        y =3
    else:
        y = 0  # 加个默认值,防止没有匹配项时报错
    print(f"得到的y值是:{y}")

# 调用测试
b()

这样一来,判断和取值用的都是同一个target_list,就不会出现“判断时有目标值,取值时列表变了”的问题啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:12:45