根据大小写对列表进行排序

问题描述

我有一个列表:

List1 = ['name','is','JOHN','My']

我想将代词附加到新列表的第一项中,最后附加名称。其他项目应该在中间,并且它们的位置可以更改。

到目前为止,我已经写过:

my_list = ['name','My']

new_list = []

for i in my_list:
  if i.isupper():
    my_list.remove(i)
  new_list.append(i)
print(new_list)

在这里,我无法检查某个项目是完全大写还是仅其首字母是大写。

我得到的输出

['name','My']

我想要的输出

['My','name','JOHN']

或:

['My','JOHN']

编辑:我看到过this个帖子,但没有我的问题的答案。

解决方法

i.isupper()会告诉您是否全部大写。

要测试仅第一个字符是大写字母,其余字符是小写字母,可以使用i.istitle()

要获得最终结果,您可以根据条件附加到不同的列表。

all_cap = []
init_cap = []
non_cap = []

for i in my_list:
    if i.isupper():
        all_cap.append(i)
    elif i.istitle():
        init_cap.append(i)
    else: 
        non_cap.append(i)

new_list = init_cap + non_cap + all_cap
print(new_list)

DEMO

,

如何?

s = ['name','is','JOHN','My']

pronoun = ''
name = ''
for i in s:
    if i.isupper():
        name = i
    if i.istitle():
        pronoun = i

result = [pronoun,s[0],s[1],name]

print(result)
,

不要@我请XD。试试这个。

daemon.json