簡體   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