我正在嘗試使用此函式將串列中的每個字串轉換為小寫格式:
def lower_list(strings):
for string in strings:
string = string.lower()
return strings
但是這個實作不起作用,但是當使用范圍函式并且我使用索引進行迭代時:
def lower_list(strings):
for i in range(len(strings)):
strings[i] = strings[i].lower()
return strings
我確實將串列中的每個元素都轉換為小寫:
> print(lower_list(mylist))
['oh brother where art thou', 'hello dolly', 'monsters inc', 'fargo']
但是在第一個實作中,我得到了帶有大寫值的原始串列,我是否錯過了 for 回圈如何作業的重要內容?
uj5u.com熱心網友回復:
在第一種情況下,您所做的只是將小寫值存盤在一個變數中,但該串列保持不變。在第二種情況下,您實際上是在更新串列中該索引處的值。
您還可以在此處使用 lambda 函式:
def lower_list(strings):
return list(map(lambda x: x.replace(x, x.lower()), strings))
串列理解是最簡單也是最好的:
def lower_list(strings):
return [string.lower() for string in strings]
uj5u.com熱心網友回復:
第一個不起作用的原因是它實際上并沒有修改串列中的值,而只是影響了串列中值的副本。當您使用基于索引的函式時,它會修改串列本身。
uj5u.com熱心網友回復:
def lower_list(strings):
for string in strings:
index_of_string = strings.index(string)
string = string.lower()
strings[index_of_string] = string
return strings
如果您希望第一個作業,也許您可??以嘗試類似的方法,但這是一種不好的方法,只是將其作為示例顯示,因此您可能會更好地理解。您需要該字串的索引,以便可以在串列中替換它。在您的第一次嘗試中,您不會替換串列中的任何內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/461295.html
