[英]List of lists changes the first list (Even when making a copy of the list)
[英]making a copy of the list but with following changes:
我正在編寫一個函數,該函數將列表作為參數,但是返回列表的副本,並進行以下更改:•字符串將其所有字母都轉換為大寫字母•整數和浮點數的值加1•布爾值被取反( False變為True,True變為False)•將列表替換為“ List”一詞,此功能應保持原始輸入不變
到目前為止,這是我所做的,但是我不確定如何將所有這些添加到空列表中,這是我的程序:
name = [1, 2, "abc123", True, [1, 2, 3]]
new_list = [ ]
for element in name:
if(type(element) == str):
for i in element:
if(i.isalpha()):
element = element.upper()
new_list += element
#print(new_list)
print(element)
elif(type(element) == int):
element = element + 1
print(element)
elif(type(element) == bool):
print(not(element))
else:
print("list")
如果您先創建一個處理個別案件的功能,這會容易得多。
def convert(item):
if isinstance(item, str):
return item.upper()
if isinstance(item, bool):
return not item
if isinstance(item, list):
return "List"
if isinstance(item, int) or isinstance(item, float):
return item + 1
raise ValueError("invalid type: {}".format(type(item)))
一旦有了這個,我們就可以應用地圖 :
map(convert, my_list)
如果您迫切需要它成為一個列表,而不僅僅是一個可迭代的列表,請將其轉換為列表:
list(map(convert, my_list))
你是如此親密,跌倒了最后的障礙。 只需使用append
添加到空列表。
name = [1, 2, "abc123", True, [1, 2, 3]]
new_list = [ ]
for element in name:
if(type(element) == str):
for i in element:
if(i.isalpha()):
element = element.upper()
new_list.append(element)
elif(type(element) == int):
element = element + 1
new_list.append(element)
elif(type(element) == bool):
new_list.append(not element)
else:
new_list.append('list')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.