2013-03-10 22 views
0

我们有这样的:加入的元组元素 - 列表理解

lst = [('543', 'Tom', '- Jerry'), ('544', 'X-man - ', 'Hulk')]` 
lst = [h+a for n,h,a in lst] 
lst =[name.split(' - ') for name in lst] 

我想第一,携手[1]并在每个元组一起[2]元素,并将它们划分在-分裂码会起作用,但对加入他们列表理解才不是。

我们希望最终的输出是:

[('534', 'Tom, 'Jerry'), ('544', 'X-man', 'Hulk')]

有了上面的代码中,我们得到的只是:

[('Tom, 'Jerry'), ('X-man', 'Hulk')]

@EDIT

我有一个问题: 有时我的元组继续艾因只有2项是这样的(第2元组): [('534', 'Tom, 'Jerry'), ('544', 'X-man - Hulk')] 我想摆脱-,这样从下面的列表理解我想出了这个修改后的版本: lst = [tuple(i.split(' - ') if len(tup) == 2 else tuple(i.strip(' - ') for i in tup) for tup in lst]然而这引发invalid syntax例外。

我很抱歉再次询问有关类似问题的人,但列表理解对我来说是一个相当新的概念,但如果我正确地完成上述工作,我会完成我的程序,因此我太急于研究整个文档现在的话题。

回答

3

也许我错了,但你真的只是想剥离空白和' - '?

In [15]: lst = [('543', 'Tom', '- Jerry'), ('544', 'X-man - ', 'Hulk')] 

In [16]: [tuple(i.strip(' -') for i in tup) for tup in lst] 
Out[16]: [('543', 'Tom', 'Jerry'), ('544', 'X-man', 'Hulk')] 
+0

是的,我只是想摆脱'-'谢谢! – nutship 2013-03-10 09:30:52

+0

@shipship如果你想剥离'-',root的解决方案更清洁 – valtron 2013-03-10 09:37:22

+0

@ root你可以在第一篇文章中再看一遍,因为我有另一个类似的问题。 – nutship 2013-03-10 11:30:12