2016-11-04 37 views
0
  • 字符串有他們所有的字母轉換爲大寫
  • 整數和浮點數有其價值增加1
  • 布爾值被否定(假變真,真亦假)
  • 列表被替換的單詞「列表」

我現在遇到的問題是,我們正在改變列表本身,而不是如果使副本返回。
以下是我迄今所做的:我需要一個函數,它接受一個列表作爲輸入,但返回none和改變輸入在以下幾個方面:

def mutate_me(my_list): 
'''(list)-> NoneType 
returns my_list mutated the same way 
as the function copy_me 

>>>test_list = [1, 2.5, "1abc", [1, 2, 3], False] 
>>>mutate_me(test_list) 
>>>test_list = [2, 3.5, "1ABC", "List", True] 

>>>test_list = [2, False, ["list"], "Hello", 1.0] 
>>>mutate_me(test_list) 
>>>test_list = [3, True, "List", "HELLO", 2.0] 
''' 
# go through every element in the list 
# check there type and based upon there 
# type apply the rule 
for element in my_list: 
    if(type(element) == str): 
     for i in element: 
      if(i.isalpha()): 
       element = element.upper() 
     my_list.append(element) 
    elif(type(element) == int or type(element) == float): 
     element = element + 1 
    elif(type(element) == bool): 
     element = not element 
    elif(type(element) == list): 
     element = "List" 
    else: 
     element 

回答

2
def mutate_me(my_list): 
    for idx, element in enumerate(my_list): 
     if(type(element) == str): 
      my_list[idx] = element.upper() 
     elif(type(element) == int or type(element) == float): 
      my_list[idx] = element + 1 
     elif(type(element) == bool): 
      my_list[idx] = not element 
     elif(type(element) == list): 
      my_list[idx] = "List" 
+0

OP不希望的小樣本返回,但改變輸入 –

+1

這不會改變原來的列表,但我的問題是我怎麼能改變原來的列表,我需要了解的事情之一,我可以不要把我的頭包裹起來。 –

+0

我修好了,所以你可以現在檢查一下。它會工作。 – Nf4r

1

這裏的解決方案

for i, element in enumerate(my_list): 
    if(type(element) == str): 
     my_list[i] = element.upper() 

您需要枚舉變異而迭代

+0

我相信OP明確告訴「我遇到的問題是,我們正在改變列表本身,而不是如果複製」 – Art

+1

確切地說。問題在於改變列表本身而不是**製作副本 –

+0

@Art OP在其中一個評論中澄清了自己的問題,我也誤解了這個問題,但是這個答案是正確的,OP想修改列表中的內容,地點。 – Rodolfo

相關問題