我想知道Python如何进行字符串比较,更具体地说,当使用小于(<
)或大于(>
)运算符时,它如何确定结果。
例如,如果我放进print('abc' < 'bac')
去True
。我知道它会比较字符串中的相应字符,但是由于缺乏更好的术语,不清楚为什么还有更多,“权重”是基于以下事实:在第一个字符串中a小于b(第一个位置)而不是在第二个字符串(第二个位置)中a小于b的事实。
比较使用字典顺序:首先比较前两个项目,如果它们不同,则确定比较的结果;如果它们相等,则比较下两个项目,依此类推,直到用尽任何一个序列。
也:
字符串的字典顺序使用Unicode代码点号对单个字符进行排序。
或在Python 2上:
字符串的字典顺序使用单个字符的ASCII顺序。
举个例子:
>>> 'abc' > 'bac'
False
>>> ord('a'), ord('b')
(97, 98)
False一旦a发现小于,则返回结果b。不比较其他项目(如你在第二个项目中所见:b> ais True
)。
注意大小写:
>>> [(x, ord(x)) for x in abc]
[('a', 97), ('b', 98), ('c', 99), ('d', 100), ('e', 101), ('f', 102), ('g', 103), ('h', 104), ('i', 105), ('j', 106), ('k', 107), ('l', 108), ('m', 109), ('n', 110), ('o', 111), ('p', 112), ('q', 113), ('r', 114), ('s', 115), ('t', 116), ('u', 117), ('v', 118), ('w', 119), ('x', 120), ('y', 121), ('z', 122)]
>>> [(x, ord(x)) for x in abc.upper()]
[('A', 65), ('B', 66), ('C', 67), ('D', 68), ('E', 69), ('F', 70), ('G', 71), ('H', 72), ('I', 73), ('J', 74), ('K', 75), ('L', 76), ('M', 77), ('N', 78), ('O', 79), ('P', 80), ('Q', 81), ('R', 82), ('S', 83), ('T', 84), ('U', 85), ('V', 86), ('W', 87), ('X', 88), ('Y', 89), ('Z', 90)]
问题内容: 我注意到我正在编写的Python脚本表现得很松散,并将其追溯到无限循环,其中循环条件为。在调试器中运行它,结果发现那条线实际上是。当我将其更改为!=’‘而不是时,它工作正常。 另外,即使比较或值,通常还是最好还是默认使用吗?我一直喜欢使用,因为我发现它在美学上更令人愉悦和pythonic(这就是我陷入这个陷阱的方式…),但是我想知道是否打算仅在你关心找到两个对象时才保留它?具有相同ID
问题内容: 我听说散列(即将字符串或对象转换为数字)用于字符串等,因为比较数字比字符串更容易。如果为真,这是什么原因? 问题答案: 不一定是这种情况,但大多数时候可能是这样。 请考虑以下情况: 我想比较字符串“ apples”和“ oranges”。如果我只想确定“ apples” ==“ oranges”,我只需要比较每个字符串的第一个字符:’a’!=’o’=>“ apples”!=“ oran
主要内容:equals() 方法,equalsIgnoreCase() 方法,equals()与==的比较,compareTo() 方法字符串比较是常见的操作,包括比较相等、比较大小、比较前缀和后缀串等。 在 Java 中,比较字符串的常用方法有 3 个:equals() 方法、equalsIgnoreCase() 方法、 compareTo() 方法。下面详细介绍这 3 个方法的使用。 equals() 方法 equals() 方法将逐个地比较两个字符串的每个字符是否相同。如果两个字符串具有相
问题内容: 我试图比较2个1000字节的字符串,并想知道差异的确切位置,即;字符串与哪个字节不同。.是否有任何函数可以确定它? 问题答案: 我试图测试此处给出的答案,并且提出了另一个 更快 (通常情况下)的解决方案,尽管它不太优雅。 首先,让我们看看所提出的解决方案有多快: 如您所见,genexp比快很多,但这可能是由于它比查找第一个非等号字符要好得多。 现在,我们如何加快速度?好吧,我们可以使用
在字符串比较中使用通配符 内含的模式匹配为字符串比较提供了一个多用途工具。下表显示了你可以通过 Like 运算符 使用的通配符和它们匹配的数字或字符串的数目。 在样式中的字符 在表达式中的匹配 ? _(下划线) 任何单一字符 * or % 零个或多个字符 # 任何单一数字(0 — 9) [charlist] 任何在字符表中的单一字符 [!charlist] 任何不在字符表中的单一字符 可用括在括号
问题内容: 给我输出: 我不太了解第一行,为什么它会给我带来错误? 如果我在字符串2上添加空格,则此行为false,但如果不添加空格,则为true: 为什么第1行给我假,但第6行为真,但是如果我在string2上添加空格则为假。 谢谢=) 问题答案: 那里发生了几件事。 当您将两个字符串声明为相等的“ Hi”时,java将对其进行优化以引用相同的字符串对象(因此不必将相同的字符串存储两次)。 “