![](/img/trans.png)
[英]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.