首页 > 解决方案 > 括号如何影响 Python 中检查字符串的“in”函数?

问题描述

假设我有一个带有 1 列的 Pandas 数据框,称为contracting_department。它有 3 行数据:

  1. 消防部门。发展
  2. 园区开发
  3. 警察发展

我在括号中看到了一些奇怪的东西

场景一:

df["contracting_department"] = df["contracting_department"].str.lower()
for i in df.contracting_department:
    if ("fire" or "police") in i : 
        print("IN")
    else:
        print("NOT IN")

输出:

  1. 不在
  2. 不在

显然这是错误的,应该是 IN,NOT IN,IN。

场景二:

df["contracting_department"] = df["contracting_department"].str.lower()
for i in df.contracting_department:
    if "fire" or "police" in i : 
        print("IN")
    else:
        print("NOT IN")

输出2:

知道这里发生了什么吗?

标签: pythonstringpandasdataframeparentheses

解决方案


if ("fire" or "police") in i

翻译为:

if "fire" in i

因为 is 的值("fire" or "police")"fire"如果or它是真实的,则运算符返回左侧,否则返回右侧)。

if "fire" or "police" in i

翻译为:

if ("fire") or ("police" in i)

这只是:

if True

因为"fire"是真实的。"police"如果is in并不重要,i因为"fire"它将始终使条件为真。


推荐阅读