比较Python中的东西。这听起来几乎是不需要教的,但是我发现Python的比较运算符经常被Python新手误解和低估。
我们来回顾一下Python的比较运算符如何处理不同类型的对象,然后看看如何使用这些比较运算符来提高代码的可读性。
Python中的比较运算符
我这里所说的 “比较运算符”是指相等运算符(== 和 !=)和排序运算符(<,<=,>,>=)。
我们可以用这些运算符来比较数字,正如你所期望的:
除此之外,我们也可以用这些运算符来比较字符串:
甚至于元组:
许多编程语言都没有与Python非常灵活的比较运算符等价的运算符。
稍后我们将看一看这些运算符如何处理元组和更复杂的对象,我们先从简单一点的开始:字符串比较。
Python中的字符串比较
字符串的相等和不相等十分简单。如果两个字符串有完全相同的字符,那么它们是相等的:
注意,我忽略了一个非常大的例外: unicode字符。通常有多种方法可以表示相同的文本,在将这些不同的表示视为相等之前,必须对它们进行标准化。为了简单起见,本文将坚持使用ASCII字符。
字符串的排序是Python中比较有趣的部分:
字符串“pickle”比字符串“python”小,因为我们是按字母顺序排序的…大小写有一部分作用:
字符串“Python”小于“pickle”,因为P小于p。
这里我们与其说是按照字母顺序还不如说是按照ASCII- 码顺序排序的 (因为我们在python3中实际是使用unicode-码)。这些字符串是按照它们的字符的ASCII码值排序的(ASCII码中p是112,而P是80)。
从技术上讲,Python是比较这些字符的Unicode代码点(这是ord函数所做的事情),而这恰好与比较ASCII字符的ASCII码值结果相同。
字符串的排序规则是:
使用==操作符比较每个字符串的第n个字符(从第一个字符开始,索引为0);如果它们相等,则对下一个字符重复这个步骤