gpt4 book ai didi

python - 无法从列表中删除字符串

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:04 24 4
gpt4 key购买 nike

我写了下面的代码:

f = copy.deepcopy(features)
if best_att in features:
f = features.remove(best_att)

其中 features 是一个字符串列表,best_att 是一个字符串。有时代码工作正常,但有时我会遇到以下问题:

例如,如果 features = ['outlook', 'temperature', 'humidity', 'wind']best_att = 'outlook'。调试时,我看到它进入了if。但是,当尝试执行 remove 时,会出现错误:f is NoneType: None(即找不到字符串在列表中)。

知道为什么会这样吗?

最佳答案

应该是:

f = copy.deepcopy(features)
if best_att in f:
f.remove(best_att)

if best_att in features:
features.remove(best_att)

从您的代码看来,您想要更改原始功能,所以就这样做吧。如果您还想要它的深度复制 f,请在修改 features 之后创建它。

您收到该消息是因为 remove 返回 None:将其返回值分配给 f 后,这就是 f 的值 也是。通常,改变状态的 Python 内置方法“不返回任何东西”(它们返回 None)——它们“都是副作用”。返回值不是变异对象,也不是成功/失败标志。一些语言区分“过程”和“函数”;这些将是“程序”。

如果您想知道 best_att 是否在 features 中,请使用 features.find(best_att)features .index(best_att).

关于python - 无法从列表中删除字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32672841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com