簡體   English   中英

創建一個 function 以迭代方式將列表中的每個項目作為參數

[英]Create a function that takes each item in a list as argument iteratively

挑戰在於使用 Python 創建一個 function,它接受列表的子列表並將條帶 function 迭代地應用於每個子列表。 之后它用清理過的子列表重建列表

輸入是列表的列表。 這是一個示例:

tringles_new[:15]

[['49', 'XT', '19.0', '93 \n'],
 ['YTX', '124.0', '167 ', '77.0\n'],
 ['4 ', 'Y', '128,', '125,\n'],
 ['142.0', '120', '141.0\n'],
 ['12 ', '51.0\n'],
 ['0,', ' 82', '156\n'],
 ['82', '102.0\n'],
 ['94', 'YYZ', '178.0', '72\n'],
 [' 120', 'YXT', '142', ' 134\n'],
 ['45,', '46', '79.0\n'],
 [' 114', 'YT', '155.0', '168\n'],
 ['98,', '27,', '119.0\n'],
 ['61,', 'XYY', '33', '1\n'],
 ['ZY', '103', '123.0', '76\n'],
 ['YZZ', '52', ' 17', ' 92\n']]

我編寫的代碼僅將 tringles_new 中的子列表作為輸入並應用條帶 function。如何讓 function 自動循環遍歷 tringles_new 中的所有子列表?

def clean_one(i):
    clean_one_output = []
    for j in i:
        j = j.strip()
        clean_one_output.append(j)
    return clean_one_output

您需要一個 function 來為每個子列表調用clean_one

我根據您的 clean_one function 的實現制作了這個 function。它可以改進,但至少,我對非 python 用戶保持簡單。

原創風格

def clean_many(many):
    clean_many_output = []
    for i in many:
        clean_many_output.append(clean_one(i))
    return clean_many_output

單班機

def better_clean_many(many):
    return [[j.strip() for j in i] for i in many]

到位

def inplace_clean_many(many):
    for i in many:
        for index, j in enumerate(i):
            i[index] = j.strip()

也許你需要為 j 加星

def clean_one(i):
    clean_one_output = []
    for j in i:
        j = *j
        clean_one_output.extend(j)
    return clean_one_output

或兩個 for 循環

def clean_one(i):
    clean_one_output = []
    for j in i:
        for k in j:
            clean_one_output.append(k)
    return clean_one_output

這是一個 function func ,它接收列表的子列表並使用閉包返回完整列表。 不確定這是否是您想要的。

def outer():
    full_cleaned_list = []
    
    def inner(sublist):
        cleaned_sublist = [s.strip() for s in sublist]
        full_cleaned_list.append(cleaned_sublist)
        return full_cleaned_list

    return inner

func = outer()

result = [func(l) for l in tringles_new]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM