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
相关产品推荐
相关产品推荐

