2011-09-26 115 views
1

我是Python新手。关于连接功能有一个问题。Python如何使用连接函数连接列表列表

masterlist = [ 
    ('ap172', ['33', '212-583-1173', '19 Boxer Rd.', 'New York', 'NY', '10005']), 
    ('axe99', ['42', '212-582-5959', '315 W. 115th Street, Apt. 11B', 'New York', 'NY', '10027']) 
] 

我想打印由管道分隔的列表的每个元素。

如果我尝试:

for i in masterlist: 
    mystring = '|'.join(i)          
    print mystring 

的错误是:

TypeError: sequence item 1: expected string, list found 

所以我想:

for i in masterlist: 
    mystring = i[0] 
    mystring += '|'.join(i[1])         
    print mystring 

,我也得到:

ap17233|212-583-1173|19 Boxer Rd.|New York|NY|10005 
axe9942|212-582-5959|315 W. 115th Street, Apt. 11B|New York|NY|10027 

所以它的工作原理,但想知道是否有更好的方法使用连接功能加入上述主表?

+0

我不知道这是你的意思做的,但前两个元素,即“ap172”和“33”,不被由竖线。 –

+0

谢谢。是的,前两个要素应该分开。 – SUM

+0

谢谢大家的回复! – SUM

回答

3

我认为将for循环中的元组拆分会更清晰。

for identifier, data in masterlist: 
    print "%s%s" %(identifier, '|'.join(data)) 
+0

尼斯pythonic答案。 –

+0

嗨,为了得到我想要的,我修改了最后一条语句:print“%s%s%s”%(identifier,'|','|'.join(data))谢谢! – SUM

1

为了让你得到了什么,你可以尝试

for i in masterlist: 
    print i[0] + '|'.join(i[1]) 

要得到什么,我想你以后,你可以试试这个

for i in masterlist: 
    print i[0] + '|' + '|'.join(i[1]) 

有很多很多方法可以做到这一点,这些都只是2

1
for i in masterlist: 
    print '|'.join([i[0]] + i[1]) 
1
from itertools import chain 
for symbol, items in masterlist: 
    print "|".join(chain([symbol], items))