我试图返回一个排序单词列表,其中字母按字母顺序排序。例如:
>>> sorted_words(["bet", "abacus", "act", "celebration", "door"])
['act', 'bet', 'door']
我的函数应该返回一个新的排序值列表,但它必须排除第一个字母的 unicode 低于或等于后续字母的任何单词。例如,“door”被追加到新列表中,因为 d' <= 'o' 且 'o' <= 'o' 且 'o' <= 'r'。这是我到目前为止所写的,但我没有运气。
def sorted_words[wordlist]:
result = []
for word in wordlist:
if word[0] <= word[1:]:
result.append(word)
print(word)
我知道这是不对的,我只是不知道如何将每个单词的第一个字母与其余字母进行比较。任何帮助将不胜感激。我还必须使用排序()方法,但我不确定如何使用它。
最佳答案
您应该将代码分为两部分:第一部分用于选择单词(根据条件),第二部分用于对所选单词进行排序。
标准的描述与示例之间存在差异。如果标准是“第一个字母的 unicode 低于或等于后续字母”,则应包含单词“abacus”。但是,您对“门”提供的解释似乎是“字符的 unicode 值应该按(不严格)升序排列”
(“严格升序表示 <
,而非严格升序表示 <=
元素与其下一个元素之间)。
对于第一个条件,请使用以下代码
WORDS = ["bet", "abacus", "act", "celebration", "door"]
list_of_words = []
for word in WORDS:
if all(word[0] <= c for c in word[1:]):
list_of_words.append(word)
list_of_words.sort()
print (list_of_words)
对于第二个条件,请使用
list2_of_words = []
for word in WORDS:
if all(c1 <= c2 for c1,c2 in zip(word[0:-1],word[1:])):
list2_of_words.append(word)
list2_of_words.sort()
print (list2_of_words)
关于python - 返回已排序单词的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36110116/