Python中带有for循环的Zip方法

2024-06-03 01:33:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从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 address_machine函数来获得预期的输出


Tags: namestreet列表addressmachineclsstpostcode
2条回答

您可以使用普通的for-loop

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(),如果您希望列表得到结果,它会将列表转换为字符串

将您的地址\u机器功能更改为:

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

您必须返回一个额外的换行符。直接返回而不是首先定义一个变量会使代码更短

相关问题 更多 >