为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

眼眸繁星 2023-10-18 20:43:27
我试图让这个循环使用 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']myMyMy我希望它返回两个大写的单词。
查看完整描述

3 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

为什么程序会失败?

仔细看看你的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 capitalized


words = ["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


查看完整回答
反对 回复 2023-10-18
?
不负相思意

TA贡献1777条经验 获得超10个赞

像这样简单的事情怎么样:


[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']


查看完整回答
反对 回复 2023-10-18
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

我已经“清理”了你的代码(但保留了概念)。


请注意,它可以以更短的方式完成。


def cap(words):

  result = []

  for j in words:

    result.append(j.capitalize())

  return result


words = "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


查看完整回答
反对 回复 2023-10-18
  • 3 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信