繁体   English   中英

复制列表,但进行以下更改:

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM