0

这是我的代码。

我需要做的就是确保列表的组织方式首先是大写单词,其次是小写单词。我环顾四周,但没有运气.sort.sorted命令。

string = input("Please type in a string? ")

words = string.strip().split()
for word in words:
    print(word)
4

2 回答 2

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']

我找不到比那个更有效的方法,所以你去吧。

于 2013-10-04T23:36:19.477 回答
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()如果所有字母都是小写,则该函数计算为真。如果这不适用于您问题的大小写定义,请在此处查看 .isupper() 和 .istitle()方法

于 2013-10-04T23:17:40.467 回答