我正在编写一个函数,该函数将列表作为参数但返回列表的副本并进行以下更改: •字符串将所有字母转换为大写字母 •整数和浮点数的值增加1 •布尔值被否定(False变为True,True变为False) •列表被替换为“列表”一词 此函数应保持原始输入不变
这是我到目前为止所做的,但我不知道如何将所有这些添加到空列表中,这是我的程序:
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")
答案 0 :(得分:2)
如果您首先要创建一个处理个人案例的函数,这会容易得多。
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:
即可map(convert, my_list)
如果您迫切需要它作为列表而不仅仅是可迭代的,请将其转换为列表:
list(map(convert, my_list))
答案 1 :(得分:1)
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')