这是我的代码。
我需要做的就是确保列表的组织首先是大写单词,然后是小写单词。我环顾四周,但.sort
或.sorted
命令没有运气。
string = input("Please type in a string? ")
words = string.strip().split()
for word in words:
print(word)
答案 0 :(得分:1)
string = raw_input("Please type in a string? ")
words = string.strip().split()
words.sort()
关于如何将大写和小写单词分成不同的列:
string = raw_input("Please type in a string? ")
words = string.split()
column1 = []
column2 = []
for word in words:
if word.islower():
column1.append(word)
else
column2.append(word)
如果所有字母都是小写,则.islower()
函数的计算结果为true。如果这对你的问题的大小写定义不起作用,请查看.isupper()和.istitle()方法here。
答案 1 :(得分:1)
sorted()
函数应按字母顺序对项目进行排序,并考虑上限。
>>> string = "Don't touch that, Zaphod Beeblebox!"
>>> words = string.split()
>>> print( sorted(words) )
['Beeblebox!', "Don't", 'Zaphod', 'that,', 'touch']
但是如果由于某些原因sorted()
忽略了上限,那么如果你愿意,可以手动使用一种列表理解:
words = sorted([i for i in words if i[0].isupper()]) + sorted([i for i in words if i[0].islower()])
这会创建两个单独的列表,第一个列出大写单词而第二个列表没有,然后单独排序并将它们连接起来以得到相同的结果。
但最后你绝对应该使用sorted()
;它更加高效和简洁。
编辑:抱歉,我可能错过了解释您的问题;如果你想组织 Caps 和而不是而不按字母顺序排序,那么这可行:
>>> string = "ONE TWO one THREE two three FOUR"
>>> words = string.split()
>>> l = []
>>> print [i for i in [i if i[0].isupper() else l.append(i) for i in words] if i!=None]+l
['ONE', 'TWO', 'THREE', 'FOUR', 'one', 'two', 'three']
我找不到比那更有效的方法,所以你去。