首页 > 解决方案 > Python中带有for循环的Zip方法

问题描述

我正在尝试从 4 个不同的列表中获取以下输出,我需要调用 address_machine 方法并从列表中压缩项目并使用 for 循环遍历新列表,然后将它们打印在新行上 --> 预期输出以下:

["T Cruise","D Francis","C White"]
["2 West St","65 Deadend Cls","15 Magdalen Rd"]
["Canterbury", "Reading", "Oxford"]
["CT8 23RD", "RG4 1FG", "OX4 3AS"]

我的方法如下所示:

def address_machine(name, street_address, town, postcode):
    address = "{0},{1},{2},{3}".format(name, street_address, town, postcode)
    return address

print([address_machine(name, street_address, town, postcode) for name, street_address, town, postcode in
       zip(["T Cruise", "D Francis", "C White"], ["2 West St", "65 Deadend Cls", "15 Magdalen Rd"],
           ["Canterbury", "Reading", "Oxford"], ["CT8 23RD", "RG4 1FG", "OX4 3AS"])])

这是一个问题,因为我得到的输出看起来像这样,并且全部在一行上:

['T Cruise,2 West St,Canterbury,CT8 23RD', 'D Francis,65 Deadend Cls,Reading,RG4 1FG', 'C White,15 Magdalen Rd,Oxford,OX4 3AS']

我需要如何编写这个 Python adress_machine 函数来获得预期的输出?

标签: pythonpython-3.xlistpython-zip

解决方案


你可以使用正常for的循环

for name, street_address, town, postcode in zip(["T Cruise", "D Francis", "C White"], ["2 West St", "65 Deadend Cls", "15 Magdalen Rd"],
       ["Canterbury", "Reading", "Oxford"], ["CT8 23RD", "RG4 1FG", "OX4 3AS"]):

     print([name, street_address, town, postcode])

或首先创建包含所有元素的列表,然后for-loop 来显示它

data = [[name, street_address, town, postcode] for name, street_address, town, postcode in zip(["T Cruise", "D Francis", "C White"], ["2 West St", "65 Deadend Cls", "15 Magdalen Rd"],
       ["Canterbury", "Reading", "Oxford"], ["CT8 23RD", "RG4 1FG", "OX4 3AS"])]

for item in data:
    print(item)

如果您期望列表的结果,不明白为什么要使用address_machine()将列表转换为字符串的函数。


推荐阅读