看来,如果数组中只有一项,那么数组上的操作符"in"不仅会匹配整个字符串.该行为与"list"和"set"不同. 我不明白区别从何而来,是设计有一些特定用途还是一个错误?

Python 3.12.3 (tags/v3.12.3:f6650f9, Apr  9 2024, 14:05:25) [MSC v.1938 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> skip_funcs = ("ENG_EN1")          # mis-match in tuple
>>> "ENG" in skip_funcs
True
>>> skip_funcs = ("ENG_EN1", "abc")   # correct if the tuple has more than one component
>>> "ENG" in skip_funcs
False
>>> "ENG_EN1" in skip_funcs
True
>>> skip_funcs = ["ENG_EN1"]          # correct for 'list'
>>> "ENG" in skip_funcs
False
>>> "ENG_EN1" in skip_funcs
True
>>> skip_funcs = {"ENG_EN1"}          # correct for 'set'
>>> "ENG" in skip_funcs
False
>>> "ENG_EN1" in skip_funcs
True

推荐答案

skip_funcs = ("ENG_EN1")

没有定义tuple,但:

skip_funcs = ("ENG_EN1",)

可以这

与数学一样,Python中的括号也用于定义优先级操作.因此,当您编写("ENG_EN1")时,您要求Python首先判断括号内的内容,即"ENG_EN1"(对于您的情况,这不是很有用).所以,在Python中

skip_funcs = ("ENG_EN1")

相当于:

skip_funcs = "ENG_EN1"

所以skip_funcs是一个字符串.所以:

"ENG" in skip_funcs 

返回True.

要区分用于定义优先级的括号和用于定义数组的括号,需要逗号.就您的情况而言,您应该写:

skip_funcs = ("ENG_EN1",)

Python相关问答推荐

指示组内的rejected_time是否在creation_timestamp后5分钟内

jit JAX函数中的迭代器

从webhook中的短代码(而不是电话号码)接收Twilio消息

Deliveryter Notebook -无法在for循环中更新matplotlib情节(保留之前的情节),也无法使用动画子功能对情节进行动画

在Polars(Python库)中将二进制转换为具有非UTF-8字符的字符串变量

如何从pandas的rame类继承并使用filepath实例化

driver. find_element无法通过class_name找到元素'""

使用NeuralProphet绘制置信区间时出错

Python避免mypy在相互引用中从另一个类重定义类时失败

通过追加列表以极向聚合

30个非DATETIME天内的累计金额

Python 3试图访问在线程调用中实例化的类的对象

统计numpy. ndarray中的项目列表出现次数的最快方法

Python Mercury离线安装

应用指定的规则构建数组

504未连接IB API TWS错误—即使API连接显示已接受''

如何使用加速广播主进程张量?

如何编辑此代码,使其从多个EXCEL文件的特定工作表中提取数据以显示在单独的文件中

来自Airflow Connection的额外参数

用由数据帧的相应元素形成的列表的函数来替换列的行中的值