当前位置: 首页 > 面试题库 >

Python中的字符串比较:与==

孙海
2023-03-14
问题内容

我注意到我正在编写的Python脚本表现得很松散,并将其追溯到无限循环,其中循环条件为while line is not ''。在调试器中运行它,结果发现那条线实际上是''。当我将其更改为!=’‘而不是时is not '',它工作正常。

另外,即使比较intBoolean值,通常还是最好还是默认使用'=='吗?我一直喜欢使用'is',因为我发现它在美学上更令人愉悦和pythonic(这就是我陷入这个陷阱的方式…),但是我想知道是否打算仅在你关心找到两个对象时才保留它?具有相同ID的对象。


问题答案:

对于所有内置的Python对象(如字符串,列表,字典,函数等),如果xy,则x == y也为True

不总是。NaN是一个反例。但通常,标识(is)表示相等(==)。反之则不成立:两个不同的对象可以具有相同的值。

另外,即使比较intBoolean值,通常还是最好还是默认使用’==’吗?

你可以使用==比较值,并在is比较标识时。

比较整数(或通常不可变的类型)时,你几乎总是希望使用前者。有一个优化允许将小整数与进行比较is,但不要依赖它。

对于布尔值,你根本不应该进行比较。代替:

if x == True:
    # do something

写:

if x:
    # do something

为了与进行比较None,is None优先于== None。

我一直喜欢使用’is’,因为我发现它在美学上更令人愉悦和pythonic(这就是我陷入这个陷阱的方式…),但是我想知道是否打算仅在你关心找到两个对象时才保留它?具有相同ID的对象

是的,这就是它的用途。



 类似资料:
  • 问题内容: 给我输出: 我不太了解第一行,为什么它会给我带来错误? 如果我在字符串2上添加空格,则此行为false,但如果不添加空格,则为true: 为什么第1行给我假,但第6行为真,但是如果我在string2上添加空格则为假。 谢谢=) 问题答案: 那里发生了几件事。 当您将两个字符串声明为相等的“ Hi”时,java将对其进行优化以引用相同的字符串对象(因此不必将相同的字符串存储两次)。 “

  • 问题内容: “按字典顺序比较两个字符串”是什么意思? 问题答案: 从@Bozho和@aioobe的答案出发,字典比较类似于在字典中可能会发现的顺序。 Java String类提供了该方法以便按字典顺序比较String。这样使用。 此方法的返回int值可以解释如下: 返回<0,则调用该方法的String按字典顺序排在首位(在字典中排在首位) 返回== 0,则这两个字符串在字典上等效 返回> 0,然后

  • 问题内容: 我需要查询表中给定字符串的值。该表区分大小写,但我想在比较中执行ToLower()。 假设我有一个包含以下数据的类表。 我的查询应该是这样的 这是进行比较的最佳方法吗? 更新 我无法控制数据库或数据。我是只读用户。 问题答案: 不; 最好改善数据:创建一个数字ID,以表示这些看似毫无意义的类变体(可能还有一个相关的查找表来获取ID)。使用where子句中的ID列,您应该找到一个索引数字

  • 问题内容: 我试图弄清楚如何将字符串中的字符与字符串中的下一个字符进行比较。例如,如果我有一个字符串: 我希望能够将第一个字符与第二个字符进行比较,如果第二个字符大于或等于第一个字符(按字母顺序,a e,y = y等),我想将1加到另一个变量(基本上是一个计数器)。如果不是,我想将计数器重置为0。基本上重复整个过程以获取字符串的长度。如果计数器变得大于maxlen变量,则将一个加到maxlen(或

  • 我已经声明了一个实现可比较接口和compareTo方法的类,使用employee ID比较两个员工。创建的类对象插入数组列表。现在,当我使用collections.sort(arrayList对象)时,它工作得很好。我对collective和comparator接口之间的比较有何不同感到困惑。我想知道如何在纯粹由数字组成的employee id字符串和其他字符串employee id之间进行比较,

  • 我有问题。我做了这个练习,但是我不知道如何在我的代码中解决最后三个问题。我需要打印失败,但我不能得到,因为我只得到OK OK,如果这就是全部。 有什么建议吗??