<在列表中的两个类型(str)之间

时间:2018-03-21 16:47:05

标签: python python-3.x

所以,我正在学习python这本书:“如何像计算机科学家一样思考:学习python 3”这就出现了:我的问题出现在最后{{1} }和elif。我们如何比较两个字符串类型与<。

else列表和bigger_vocab都是字符串类型,我无法理解它为何使用此book_words

请帮助我,如果你需要更多信息,尽管我在解释方面不是那么好,但试着回答。

<

3 个答案:

答案 0 :(得分:1)

问题归结为“当我们比较两个字符串时会发生什么?”。基本上,如果A按字母顺序排在B之前,则字符串A被视为“小于”字符串B。因此ape'小于'badger,因为a位于字母表中的b之前。

由于vocabwds都已排序,因此此循环基本上会跟踪我们当前正在检查的wds中的哪个单词,然后跳过vocab中的单词,直到vocab中的当前单词与wds中的当前单词匹配(在这种情况下vocab中的索引向上移动一个单词)或wds中的当前单词为“更大”比vocab中的当前单词,在这种情况下,我们转到下一个词汇单词。

如果vocab中的当前字词为'badger',则您可以向前跳过wds,直到wds中的当前字词大于'badger'(在这种情况下) 'badger'不在wds列表中,或者wds 中的当前单词是'badger'(在这种情况下,您将'badger'添加到结果列表中然后转到下一个词汇词来寻找)。

答案 1 :(得分:1)

您可以在字符串上使用比较运算符==,!=,>,<,>=,<=,就像对整数或浮点数一样。通过逐字符地比较字符ASCII值,对字符串进行比较的方式大致按字母顺序排列。有关详细信息,请参阅here

答案 2 :(得分:0)

比较两个字符串时,您正在检查字母顺序*

print('A' > 'B') # False

print('AAA' > 'AAB') # False

print('BAA' > 'AAA') # True

小写字母在大写字母之前:

print('z' > 'A') # True

和数字字符串是最后一个:

print('c' > '1') # True

print('B' > '0') # True

*我们实际检查的不完全是字母顺序,而是每个字符的ASCII value(字母按字母顺序排列)。
您可以使用print(ord('A'))打印每个字符的ASCII值:

print(ord('A')) # 65
print(ord('B')) # 66
print(ord('z')) # 122
print(ord('1')) # 49
print(ord('0')) # 48

有了这些前提,我们确实希望 @ ord('@')) = 64)低于} ord('}') = 125):

print('@' < '}') # True