我有这部分代码:
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
等。但如果我的列表将逐行从文本文件中生成,我应该管理它吗?
让我感到沮丧,无法一次返回多个列表。
答案 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]