如何在不知道列表名称的情况下使用 zip

How to use zip not knowing the list name

我正在尝试遍历命令行参数并打开给定的文件。我尝试使用 lines = file.readlines() 读取行,然后使用 zip 组合项目。但我不知道如何在不知道列表名称的情况下进行操作。 这是我的代码:

import sys
import os
index = 1
while index < len(sys.argv):
    if os.path.exists(sys.argv[index]) == True:
        with open(sys.argv[index], 'r') as file:
            lines = file.readlines()
            #zip lines in files
        index = index + 1

文件内容为:

文件 1:

12

27

59

文件 2:

21

72

95

在这种方法中,你遍历每个参数,并追加到一个列表中,在每个文件的末尾,它将追加到一个新列表中,你最终会得到一个列表列表

import sys
import os
container = []
for document in sys.argv[1:]:
    if os.path.exists(document):
        aux = []
        with open(document, 'r') as file:
            for line in file:
                aux.append(line.replace('\n',''))
    container.append(aux)
print(*zip(*container))

然后你就可以解压列表并压缩它,我手动替换行的跳转,用它做任何你想做的事。 ;)

文件 1 包含

7
1
3
5
6
3

文件 2 包含

11
12
13
14
15

输入

python test.py test1.txt test2.txt

输出

('7', '11') ('1', '12') ('3', '13') ('5', '14') ('6', '15')

编辑

在这一行 "print(*zip(*container))" 中,我们正在解压缩容器,它是一个包含列表的列表,当我们压缩它时,正如您可能知道的那样,当您压缩某些东西时,会创建一个 zip 对象,它是一个可迭代对象,为了 "unzip" 它并将其表示为一组元组,您使用 * (starred expression),例如将其解包:

>>> a = zip([1,2,3,4,5], [5,4,3,2,1])
>>> print(a)
<zip object at 0x00000219ECE8C408>
>>> print(*a)
(1, 5) (2, 4) (3, 3) (4, 2) (5, 1)