2011-04-26 44 views
1

如果L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]切片爲「「在python空間

將如何切L到讓一切都交給第一空間

['abc,'foo','bar'] 
+1

我喜歡這些Python速度編碼。他們清楚地顯示了在Python中編程的快速實踐。 ';)' – ulidtko 2011-04-26 18:33:29

+0

當然,如果它總是三個第一個字符,你可以在[L]中使用'[i [0] [0:3]'。 – Benjamin 2011-04-26 19:00:02

回答

5
In [1]: L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]] 

In [2]: [x[0].split(' ')[0] for x in L] 
Out[2]: ['abc', 'foo', 'bar'] 
2
L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]] 
print [x[0].split()[0] for x in L] 
1
for i in range(len(L)): 
    s = L[i][0] 
    s = s.split(' ')[0] 
    L[i] = s 
+2

Ewwww。學習列表理解,老兄! – ulidtko 2011-04-26 18:37:56

+3

@ulidtko嗯,我給出了一個答案,我會採取的方式去做,並不意味着它必須被接受或upvoted – keepitreall89 2011-04-26 18:39:37

0

在情況下,您目前,空間總是出現在同一個位置。如果你知道這將是的話,你可以這樣做:

L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]] 
L2 = [x[0][0:3] for x in L] 
print L2 

輸出:

[ 'ABC', '富', '酒吧']

中當然,如果空間可能出現在不同的位置,那麼使用str.split()的解決方案之一會更好。

0

我發現列表理解有時更難看了,我希望保持獨立的循環和提取:

def extract(element): 
    """Extracts the string until the first space of the first element of a list 
    >>> extract(['abc 1234',2]) 
    'abc' 
    """ 
    return element[0].split()[0] 

,這樣就可以做單一元素的一些測試:

extract(L[2]) 
'bar' 

,然後用一個列表理解或使用地圖應用此[適用功能到列表中的每個元素]:

map(extract,L) 
['abc', 'foo', 'bar']