gpt4 book ai didi

python - 处理多个列表

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:29 24 4
gpt4 key购买 nike

我编写了一个 Python 脚本来处理多个文件中的数据并创建多达 9 个新文件作为输出。为此,我创建了 9 个不同的列表,然后将它们写入最多 9 个不同的文件(取决于列表是否包含任何项目)。

我的代码非常重复,例如:

if list1 != []:
newfile1 = open(os.path.join(dirpath,"newlist1.txt"),'w')
for i in list1:
newfile1.write(i)
newfile1.close()

if list2 != []:
newfile2 = open(os.path.join(dirpath,"newfile2.txt"),'w')
for i in list2:
newfile2.write(i)
newfile2.close()

..... 对于 9 个不同的列表我主要对自己的发展感到好奇,我能以更有效的方式做到这一点吗?我循环遍历目录中的文件以创建列表,但我可以循环遍历内存中的列表以创建输出文件吗?

我可能应该为文件写入创建一个函数,但我不确定如何处理它需要创建的不同输出文件名?每个列表都有不同的输出名称——创建不同的变量?这最终会更有效率吗?

最佳答案

如果你有一个列表列表lsts,比如:

lsts = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]

然后你可以这样做:

for i, lst in enumerate(lsts, 1):
if lst:
with open(os.path.join(dirpath,"newfile{}.txt".format(i)), 'w') as f:
for elem in lst:
f.write(elem)

可以用 if lst 检查列表是否为空(空列表为假)。此外,使用 with 上下文打开文件不需要之后明确关闭它。

编辑:构建字典可能更合乎逻辑(因此您将文件名和数据放在一起):

d = {'file1.txt': ['a', 'b', 'c'],
'file2.txt': ['d', 'e', 'f'],
'file3.txt': ['g', 'h', 'i']}

for filename, lst in d.iteritems():
if lst:
with open(os.path.join(dirpath, filename), 'w') as f:
for elem in lst:
f.write(elem)

关于python - 处理多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34590909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com