这是我的代码。
我需要做的就是确保列表的组织方式首先是大写单词,其次是小写单词。我环顾四周,但没有运气.sort
或.sorted
命令。
string = input("Please type in a string? ")
words = string.strip().split()
for word in words:
print(word)
该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']
我找不到比那个更有效的方法,所以你去吧。
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()
如果所有字母都是小写,则该函数计算为真。如果这不适用于您问题的大小写定义,请在此处查看 .isupper() 和 .istitle()方法。