请输入字符串:Python 和 Perl 是编程语言
Python
Perl
and
are
programming
languages
我想要拆分输入,但大写单词在顶部。我正在考虑使用两个列表:一个带有标题大小写单词,一个带有较低的单词。我正在尝试使用 if 语句将单词放在某个列表中。请提出一些想法!
谢谢
您的示例输出是错误的,因为它看起来像这样:
Perl
Python
and
are
languages
programming
按大写优先排序会导致Perl
上述结果,Python
因为e
先到先得。此外,因为大写首先出现,所以你可以简单地做
print "\n".join(sorted(a.split()))
得到想要的结果。
编辑:重读问题后,我想出了这个修复/输出:
print "\n".join(sorted(a.split(), key=lambda x: x >= 'a'))
输出:
Python
Perl
and
are
programming
languages
解释: Python 中的排序函数是stable的,这意味着如果元素具有相同的比较键,则它们的相对顺序会保持不变。key 函数将为True
大于或等于的任何值'a'
(即任何以小写字母开头的字符串)分配值,否则为False
。False
比较小于True
,所以任何大写字母都被移到前面,而不改变大写或小写单词的顺序。
如果是作业,你应该给它一个标签“作业”。无论如何,使用两个列表的想法还不错。
.split()
以获取单词。for
来处理提取的单词。word
是字符串变量,那么word[0]
是它的第一个字符。如果它小于或等于'Z'
它是一个大写的单词,应该附加到想要的列表中。'\n'.join(lst)
从单词列表中获取多行字符串。