我有以下问题:
我需要在python中分别“混合”两个列表。。。在
我有这个:
names = open('contactos.txt')
numbers = open('numeros.txt')
names1 = []
numbers1= []
for line in numbers:
numberdata = line.strip()
numbers1.append(numberdata)
print numbers1
for line in names:
data = line.strip()
names1.append(data)
print names1
names.close()
numbers.close()
这将首先打印大约300个数字,然后再打印相应的300个名称,我需要做的是创建一个新文件(txt),在一行中打印名称和数字,用逗号(,)分隔,如下所示:
^{pr2}$我希望你能帮我做这件事,我试过用“for”来做,但是如果我同时迭代两个列表,我不知道该怎么做,谢谢:)
利用
zip
:{cd1>将两个列表合并在一起:
不过,你可以节省一点时间。在代码中,您将分别迭代每个文件,从每个文件创建一个列表。您也可以同时迭代这两个选项,在一次扫描中创建列表:
^{pr2}$这使用了一个
^{3}$with
语句(上下文管理器),它实际上为您处理文件的关闭。这将遍历contactos
,读取numeros
中的一行,并将该对追加到列表中。您甚至可以省去列表步骤,在同一循环中直接写入第三个文件:以这种方式混合两个列表的“pythonic”方法是zip函数!在
还有其他更好的打印格式化文本的方法(例如Yuushi的答案)。我还喜欢使用
^{pr2}$with
语句和列表理解,例如最后,我只想评论一下,如果不使用zip函数,您将如何做到这一点。如果有不同数量的数字和名称,我不确定您要做什么,但是您可以在最后一位使用
^{3}$for
循环,以便在单个for循环中访问两个列表中的值:如果名称多于数字,此代码尤其会引发异常,因此您可能需要添加一些代码来处理该异常。在
相关问题 更多 >
编程相关推荐