You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中is运算符语法问题:为何条件判断输出所有列表元素?

问题原因及修正方案

你的代码问题出在条件判断的逻辑错误,和is/==运算符本身关系不大,核心是你写错了判断表达式。

错误原因

你写的if value is '0' or '1',Python会按优先级解析成 (value is '0') or '1'。由于非空字符串'1'在布尔语境下永远是True,不管前面的value is '0'结果如何,整个条件都会返回True,所以循环会输出所有列表元素。就算换成==,如果写成value == '0' or '1',问题完全一样——因为'1'始终为真,条件永远成立。

另外补充:判断字符串值相等应该用==,而不是is。is是用来判断两个对象是否是同一个内存地址的,短字符串可能因为Python的字符串驻留机制看起来能用,但这是不可靠的,判断值相等必须用==。

正确写法

有两种简洁且正确的写法:

  1. 完整写出两个判断表达式,用or连接:
if value == '0' or value == '1':
  1. 用in判断元素是否在目标集合中(更推荐,尤其是判断值较多时):
if value in {'0', '1'}:

修正后的完整代码

另外注意:不要用list作为变量名,会覆盖Python内置的list类型,导致后续潜在问题。

my_list = ['xy', 'yz', '=', '1', 'in', '>', 't']

for value in my_list:
    if value in {'0', '1'}:
        Zustand = value
        print("Zustand:", Zustand)

内容的提问来源于stack exchange,提问作者Markus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:31:25