2013-02-10 39 views
1

考慮以下幾點:拉上交替元素

list = [('[', "'Conrad Clifton'"), ('[', "'Rippa'")] 

我將如何獲取列表的形式類似

[('Conrad Clifton', 'Rippa')] 

東西:

new_list = [] 
for first, second in list: 
    new_list.append(second) 

然後轉換列表成一個元組。有沒有辦法做到這一點與列表理解?

+3

壞主意,使用 '列表' 作爲名稱... – 2013-02-10 23:27:42

+0

'元組(第二爲第一,第二列表)'? – millimoose 2013-02-10 23:28:31

+0

您發佈的代碼會產生'['''康拉德克利夫頓'','''''''',而不是'[''康拉格克利夫頓','裏帕')]''。你想要什麼? – Johnsyweb 2013-02-10 23:32:18

回答

5
>>> tuple(second for first, second in li) 
("'Conrad Clifton'", "'Rippa'") 

不要命名您的列表作爲list。這是一個內置的類型。您不應該使用內置名稱來命名變量。

+0

爲什麼要構建一箇中間列表?似乎有點浪費。 – 2013-02-10 23:28:54

+0

@WaleedKhan。是的。在添加元組到列表理解時忘了刪除。 – 2013-02-10 23:29:35

3
your_output = tuple(y for x,y in your_input) 
+0

哈哈,真好! – cnicutar 2013-02-10 23:28:56

3

另一種解決方案(蟒2.X):使用list作爲變量名

>>> x = [('[', "'Conrad Clifton'"), ('[', "'Rippa'")] 
>>> zip(*x)[1] 
("'Conrad Clifton'", "'Rippa'") 

避免,它陰影內置的名稱。

0

您還可以使用operator.itemgetter

>>> import operator 
>>> l = [('[', "'Conrad Clifton'"), ('[', "'Rippa'")] 
>>> map(operator.itemgetter(1), l) 
    ["'Conrad Clifton'", "'Rippa'"]