在Python中返回多个列表

时间:2017-12-12 18:54:52

标签: python list

我有这部分代码:

def readTXT():
    part_result = []
    '''Reading all data from text file'''
    with open('dataset/sometext.txt', 'r') as txt:
        for lines in txt:
            part = lines.split()
            part_result = [int(i) for i in part]
            #sorted([(p[0], p[14]) for p in part_result], key=lambda x: x[1])
            print(part_result)
            return part_result

我正在尝试将所有列表作为返回,但是现在我只得到第一个,很明显,因为我的return在for循环中。但是,循环是否应该遍历每一行并返回相应的列表?

经过研究,我发现的只有return list1, list2等。但如果我的列表将逐行从文本文件中生成,我应该管理它吗?

让我感到沮丧,无法一次返回多个列表。

2 个答案:

答案 0 :(得分:2)

这是我的建议。在循环的每次迭代中创建'major_array'并在该数组中添加'part_result'。这样,如果你的循环迭代10次,那么你将在'major_array'中添加10个数组。最后,当for循环结束时返回数组。 :)

def readTXT():
    #create a new array
    major_array = [] 
    part_result = []
    '''Reading all data from text file'''
    with open('dataset/sometext.txt', 'r') as txt:
        for lines in txt:
            part = lines.split()
            part_result = [int(i) for i in part]
            #sorted([(p[0], p[14]) for p in part_result], key=lambda x: x[1])
            print(part_result)
            major_array.append(part_result)
         return major_array

答案 1 :(得分:0)

这是一个解决方案:

def readTXT():
    with open('dataset/sometext.txt') as lines:
        all_lists = []
        for line in lines:
            all_lists.append([int(cell) for cell in line.split()])
        return all_lists

请注意,return语句位于循环之外。你只得到一个列表,因为你在循环中返回。

对于更高级的用户,此解决方案更短,更高效,但代价是有点难以理解:

def readTXT():
    with open('dataset/sometext.txt') as lines:
        return [[int(x) for x in line.split()] for line in lines]