Python:用list覆盖先前添加的lis附加空列表

2024-10-02 14:29:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将所有已处理的列表(删除空列表项、删除所有\n\r等)添加到名为allOrders的空列表中。问题是代码执行后allOrders只包含作为最后一个附加的列表。你知道吗

import os

if orderFilesListCount >= 1:
    for singleOrderFile in orderFilesList:                       # does the following to all Orders in OrderFileList
        orderContents = list()                                   # creates empty list 
        dataRemoveSpaces = list()                                # creates empty list 
        allOrders = list()                                       # creates empty list
        f = open(os.path.join(directory, singleOrderFile), "rb") # opens each order file 
        data = f.read().decode("utf16")                          # decodes data from file
        dataRemoveLine = data.rstrip().split('\n')               # removes new lines
        dataRemoveTabs = [s.strip('\r') for s in dataRemoveLine] # removes all /r from list items
        dataRemoveEmpty = list(filter(None, dataRemoveTabs))     # removes all empty list items
        for element in dataRemoveEmpty:                          # following code trimms all elements in list
            element = element.strip()
            dataRemoveSpaces.append(element)                     # add trimmed elements back to list
        print(dataRemoveSpaces)                                  # my verification if the list was sucessfuly processed
        allOrders.append(dataRemoveSpaces)                       # appends allOrders list with processed list 

我知道“处理”每一个单独的列表并不是代码的问题(多亏了lastprint-它看起来和它应该的完全一样)。你知道吗

这里有什么问题?我见过几个线程处理类似的问题,但不能将它们的解决方案应用到我的。你知道吗


Tags: in列表fordataifoselementall
2条回答

每次迭代都要重新创建allOrders

allOrders = list()#creates empty list

所以你把它擦掉。在if语句中,将此行移出循环:

if orderFilesListCount >= 1:
    allOrders = list()  # <         - HERE
    for singleOrderFile in orderFilesList:

或者甚至是if语句:

allOrders = list()  # <         - HERE
if orderFilesListCount >= 1:
    for singleOrderFile in orderFilesList:

所以你不会不断地抹去它。你知道吗

放置线:

allOrders = list()#creates empty list

在for循环之外,因为您迭代的每个步骤都在创建一个空列表,因此只有最后一个列表

相关问题 更多 >