1

我有一个文本文件,其中包含:

I like potatoes
Potatoes are good
Potatoes contain starch

我想测试每个句子是否按字典顺序排列。

如果句子是我希望它输出“This is in lexicographic order”

我不太确定该怎么做。

4

1 回答 1

0

一种方法是读取文件,拆分行,将行按顺序排列,然后检查顺序是否相同。

这可能不是最有效的方法,但会起作用:

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)
于 2015-08-07T03:43:45.077 回答