我正在学习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)
答案 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)