如何使用 for 循环来迭代 python 3 中单词列表中的每个单词

我试图让这个循环使用 Capitalize() 函数将每个单词大写


这是代码


def cap(words):

  for j in words:

    print(j)

    return j.capitalize()


s = "my name"

parts = s.split(" ")

print(parts)

it = iter(parts)


capped = cap(parts)

print(capped)


result = capped.join(" ")


print(capped)

输出:


['my', 'name']

my

My

My

我希望它返回两个大写的单词。


眼眸繁星
浏览 134回答 3
3回答

繁星淼淼

为什么程序会失败?仔细看看你的cap()函数。def cap(words):  for j in words:    print(j)    return j.capitalize()return j.captialize()将退出该函数并且仅返回第一个单词的大写值。更正该函数必须将列表中的所有元素大写。def cap(words):    capitalized = []    for word in words:        capitalized.append(word.capitalize())    return capitalized现在最终的代码应该是这样的def cap(words):    capitalized = []    for word in words:        capitalized.append(word.capitalize())    return capitalizedwords = ["hello","foo","bar"]capitalized = cap(words)print(*capitalized)也许更Pythonic的方法是使用列表理解def cap(words):    return [word.capitalize() for word in words]words = ["hello","foo","bar"]capitalized = cap(words)print("Regular: ",*words) # printing un-packed version of words[]print("Capitalized: ",*capitalized) 输出:常规:hello foo bar大写:Hello Foo Bar

不负相思意

像这样简单的事情怎么样:[s.capitalize() for s in words]这里发生了什么?简而言之,就是代码复杂度优化。编写高质量代码的一部分不是编写冗长、(可能)低效的代码,而是效率和可读性。该循环使用了一种称为列表理解的技术。在处理列表或处理简单到不需要专用函数的事情时,这是一种非常有用的技术。words迭代时,对每个单词调用该函数.capitalize(),并将结果附加到返回的列表中 - 无需显式附加列表。要将其变成一个函数,您可以使用:def cap(words) -> list:    """Capitalise each word in a list.    Args:        words (list): List of words to be capitalised.    Returns:        A list of capitalised words.    """    return [s.capitalize() for s in words]输出:words = 'my name'.split(' ')cap(words)>>> ['My', 'Name']

婷婷同学_

我已经“清理”了你的代码(但保留了概念)。请注意,它可以以更短的方式完成。def cap(words):  result = []  for j in words:    result.append(j.capitalize())  return resultwords = "my name"words_lst = words.split(" ")capped = cap(words_lst)result = " ".join(capped)print(result)输出My Name更短的方法:-)print(' '.join([s.capitalize() for s in 'my name'.split(' ')]))输出My Name
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python