如何从列表中删除小写字母并将其反转

How to delete lower case from a list and reverse it

目的是试图反转消息,删除所有以小写字母开头的字符串,最后将所有字符串都变成小写。

这是我的代码:

msg = input('code: ')
msg = msg.split()
msg = list(reversed(msg))
for i in msg:
  if i[0] == i[0].lower:
    del msg[i]
msg = ' '.join(msg)
msg = msg.lower()
print(msg)

举个例子

BaSe fOO ThE AttAcK

然后会变成

attack the base

非常感谢你们!!!!!!!!!!所以我回去编辑了我的代码:

new_msg = []
msg = input('code: ')
msg = msg.split()
msg = list(reversed(msg))
for word in msg:
  if not word[0].islower():
    new_msg.append(word.lower())
new_msg = ' '.join(new_msg)
print("says:",new_msg)

我回去标记它,但它说你不能有标点符号!是的,我想我又需要帮助了,我该如何摆脱它们?

new_msg = []
msg = msg.split()
for word in msg: #For every word in the string
    if not word[0].islower(): #if it starts with anything other than lowercase
        new_msg.append(word.lower()) #add to new list
new_msg = ' '.join(new_msg[::-1]) #Reverse order of list and make into string
" ".join([word.lower() for word in reversed(msg.split()) if not word[0].islower()])

这就是为什么您的代码 不起作用 ,至少:

>>> i = 'fOO'

>>> i[0] == i[0].lower     # huh?
False

>>> i[0].lower             # oh!
<built-in method lower of str object at 0x00249F40>

>>> i[0].lower()           # we forgot to *call* it
'f'

>>> i[0] == i[0].lower()   # perfect!
True

您正在将字符串与方法对象进行比较——这就是永远不会满足条件的原因。

如果你修复了这个错误,它仍然不会工作;您正在删除没有任何意义的 msg['fOO']!尝试使用 enumerate() 获取索引以及列表中的字符串。

(然后还是不行。你能找出原因吗?)

这看起来有点吓人,但我会解释一下。

s = "BaSe fOO ThE AttAcK"
print ' '.join(reversed([word.lower() for word in s.split(' ') if not word[0].islower()]))

我在这里所做的是将 s 拆分为单个 space ' ',然后创建一个包含任何非单个 ' ' 的列表。然后我遍历 "words" 的列表并使用内置的 lower 方法将每个单词转换为较低的,只有当单词的第一个字符(我们通过调用第 0 个索引获得)不低于时。最后我们使用 join 方法加入我们创建的列表。

编辑:我忘了反转列表。

string = raw_input().split()                                                     
string2 = []                                                                     
for i in range(len(string)):                                                     
    if not string[i].[0].islower():                  
        string2.insert(0,string[i].lower())                                              
print ' '.join(string2)                                                          

我建议您在任何情况下都不要删除 list/Dict 迭代中的任何元素。 如果你这样做,那就错了。

像那样:

sMsg="BaSe fOO The AttAck"
lstMsg=sMsg.split(" ")
for i in xrange(len(lstMsg)):
    if lstMsg[i][0].islower():
        del lstMsg[i]