我有一个文本文件,其中包含:
I like potatoes
Potatoes are good
Potatoes contain starch
我想测试每个句子是否按字典顺序排列。
如果句子是我希望它输出“This is in lexicographic order”
我不太确定该怎么做。
我有一个文本文件,其中包含:
I like potatoes
Potatoes are good
Potatoes contain starch
我想测试每个句子是否按字典顺序排列。
如果句子是我希望它输出“This is in lexicographic order”
我不太确定该怎么做。
一种方法是读取文件,拆分行,将行按顺序排列,然后检查顺序是否相同。
这可能不是最有效的方法,但会起作用:
with open('potatoes.txt') as potatoes:
potato_lines = potatoes.readlines()
print sorted(potato_lines) == potato_lines
这个问题的答案向您展示了如何在不排序的情况下进行检查。
例如,这个答案提供了一种生成对以检查订单的简洁方法:
from itertools import tee, izip
def pairwise(iterable):
a, b = tee(iterable)
next(b, None)
return izip(a, b)
def is_sorted(iterable, key=lambda a, b: a <= b):
return all(key(a, b) for a, b in pairwise(iterable))
然后你可以使用:
with open('potatoes.txt') as potatoes:
print is_sorted(potatoes)