使列表大写字符串 - Python 3

时间:2017-08-01 21:39:07

标签: python-3.x uppercase

我正在学习python并且通过实际示例我遇到了一个我似乎无法找到解决方案的问题。 我用以下代码得到的错误是 'list' object has to attribute 'upper'

def to_upper(oldList):
    newList = []
    newList.append(oldList.upper())

words = ['stone', 'cloud', 'dream', 'sky']
words2 = (to_upper(words))
print (words2)

4 个答案:

答案 0 :(得分:3)

由于upper()方法仅为字符串而不是列表定义,因此您应该遍历列表并对列表中的每个字符串进行大写,如下所示:

def to_upper(oldList):
    newList = []
    for element in oldList:
        newList.append(element.upper())
    return newList

这将解决您的代码问题,但是如果您想要大写字符串数组,则会有更短/更紧凑的版本。

  • 地图功能map(f, iterable)。在这种情况下,您的代码将如下所示:

    words = ['stone', 'cloud', 'dream', 'sky']
    words2 = list(map(str.upper, words))
    print (words2)
    
  • 列表理解 [func(i) for i in iterable]。在这种情况下,您的代码将如下所示:

    words = ['stone', 'cloud', 'dream', 'sky']
    words2 = [w.upper() for w in words]
    print (words2)
    

答案 1 :(得分:0)

AFAIK,upper()方法仅针对字符串实现。您必须从列表中的每个子节点调用它,而不是从列表本身调用它。

答案 2 :(得分:0)

您可以使用列表理解表示法,并将upper方法应用于words中的每个字符串:

words = ['stone', 'cloud', 'dream', 'sky']
words2 = [w.upper() for w in words]

或者使用map来应用函数:

words2 = list(map(str.upper, words))

答案 3 :(得分:0)

您学习Python非常棒!在您的示例中,您尝试将列表大写。如果你仔细想想,那根本无法奏效。您必须大写该列表的元素。此外,如果在函数结束时返回结果,则只会从函数中获取输出。请参阅下面的代码。

快乐学习!

 def to_upper(oldList):
        newList = []
        for l in oldList:
          newList.append(l.upper())
        return newList

    words = ['stone', 'cloud', 'dream', 'sky']
    words2 = (to_upper(words))
    print (words2)

Try it here!