【发布时间】:2018-03-12 18:01:46
【问题描述】:
例如,我定义了一个这样的函数来处理几个文本文件
def file_process(file):
procedures
...
return (a,b,c)
如果我有5个文本文件,如何让它们都通过这个函数,输出结果分配给每个文件的结果。
目标是这样的:
x1, y1, z1 = file_process(a.txt)
x2, y2, z2 = file_process(b.txt)
x3, y3, z3 = file_process(c.txt)
x4, y4, z4 = file_process(d.txt)
x5, y5, z5 = file_process(e.txt)
但是这种打字当然是愚蠢的。所以如果我尝试for循环:
for f in [a.txt, b.txt, c.txt, d.txt, e.txt]:
x,y,z = file_process(f)
那么如何确保将结果分别分配给每个文本文件的结果呢?
【问题讨论】:
-
在这种情况下,可能是一个列表:带有键
'x'、'y'和'z'的字典;或元组(x, y, z)。 -
可以使用字典或数组来存储对应的元组(x,y,z)。在 dict 的情况下,您的 func 可以返回键值对,其中文件名作为键,元组作为值。
-
这取决于你以后如何访问它们,如果你知道 x1, y1, z1 来自第一个文件并且 a.txt 是第一个文件,你可以使用元组列表,但最好的方法是使用字典,其中键是文件名,值是包含函数返回值的元组。这方面的一个示例如下所示:
d = {"a.txt": (x1, y1, z1), "b.txt": (x2, y2, z2) ...};并假设文件名在列表中,示例代码为:d = {f: file_process(f) for f in filenames_list} -
@QnARails,@NightFury 明白了!谢谢
标签: python python-3.x function for-loop