首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >熊猫中的嵌套布尔算子

熊猫中的嵌套布尔算子
EN

Stack Overflow用户
提问于 2022-06-07 16:17:56
回答 3查看 36关注 0票数 -1

我试图创建并应用一个函数,根据给定单元格中单词的词干版本将一些数据组合在一起。

以下是我的相关代码:

代码语言:javascript
运行
复制
    if "fee" in match and (
        "accredit" or
        "admin" or
        "administr" or
        "design" or
        "invest" or
        "one-tim") in match:
        return "Add-on fees"

由于某些原因,我很难理解,这段代码包含不足,只生成值为"fee“和"accredit”的单元格,而不是"fee“和其他任何一个。

如果我移除第一个in match并将代码作为

代码语言:javascript
运行
复制
    if "fee" and (
        "accredit" or
        "admin" or
        "administr" or
        "design" or
        "invest" or
        "one-tim") in match:
        return "Add-on fees"

它只给了我包括“授权”的结果,不管它们是否包含“费用”。

我能够搜索的关于如何嵌套逻辑运算符的所有内容都更多地关注按位运算符,而不是布尔型运算符。

如能提供任何帮助,将不胜感激!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-06-07 16:40:40

这不是andor的工作方式,它们的工作方式更像

代码语言:javascript
运行
复制
#X and Y
def and(X,Y):
    if bool(X):
        return Y
    else:
        return X

# X or Y
def or(X,Y):
    if bool(X):
        return X
    else:
        return Y

你想要的是

代码语言:javascript
运行
复制
if "fee" in match and any(word in match for word in ("accredit", "admin", "administr", "design", "invest", "one-tim")):
    return "Add-on fees"
票数 0
EN

Stack Overflow用户

发布于 2022-06-07 16:30:00

避免在字符串中使用or,除非您确定发生了什么。在您的示例中,"accredit" or "admin" or "administr" or "design" or "invest" or "one-tim"将始终计算为'accredit'。本质上,你是在检查"fee" in match and "accredit" in match。试一试如下:

代码语言:javascript
运行
复制
arr = ["accredit", "admin", "administr", "design", "invest", "one-tim"]
match = ["fee", "design"]
("fee" in match) and any(x in match for x in arr)
# True
票数 0
EN

Stack Overflow用户

发布于 2022-06-07 16:30:39

您发现的问题是括号中的单词正在计算到第一个单词的值。

为了提高代码的可读性,我将其更改为:

代码语言:javascript
运行
复制
if ("fee" in match) and do_other_checks(match):
    return "Add-on fee"

def do_other_checks(match):
    for word in [
        'accredit',
        'admin',
        'administr',
        'design',
        'invest',
        'one-tim',
    ]:
        if word in match:
            return True
    return False
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72534548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档