首页 > 解决方案 > 在Python中划分两个列表的每个对应元素

问题描述

我在单独的文本文件中有两个列表,我需要将每个值除以另一个列表中的相应值。以下是两个文件中的一小部分数据:

738500.0
683000.0
647000.0
623500.0
607500.0

547000
644000
702000
735000
755000
765000

我已经像这样打开了两个列表:

average = open('average2mm.txt','r')
average_content = average.read()
average.close()

difference = open('difference2mm.txt','r')
difference_content = difference.read()
difference.close()

我想我必须使用正确的循环来划分两个列表,但我还没有设法完成它。

标签: pythonlist

解决方案


一种可读、干净和安全的方法是:

with open('average2mm.txt','r') as average, \
     open('difference2mm.txt','r') as difference:

    for avg, diff in zip(average, difference):
        avg, diff = avg.strip(), diff.strip()
        if avg and diff:
            ratio = float(avg) / float(diff)
            print(ratio)

如果要将其存储在列表中:

result = []
with open('average2mm.txt','r') as average, \
     open('difference2mm.txt','r') as difference:

    for avg, diff in zip(average, difference):
        avg, diff = avg.strip(), diff.strip()
        if avg and diff:
            ratio = float(avg) / float(diff)
            result.append(ratio)

如果要写入另一个文件,可以遍历result列表并写入文件,或者:

with open('average2mm.txt','r') as average, \
     open('difference2mm.txt','r') as difference, \
     open('ratio.txt', 'w') as ratiofile:

    for avg, diff in zip(average, difference):
        avg, diff = avg.strip(), diff.strip()
        if avg and diff:
            ratio = float(avg) / float(diff)
            print(ratio, file=ratiofile)
            # Or,
            # ratiofile.write(f'{ratio}\n')

推荐阅读