亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 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 關注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號