如果L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]
切片为““在python空间
将如何切L到让一切都交给第一空间
['abc,'foo','bar']
如果L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]
切片为““在python空间
将如何切L到让一切都交给第一空间
['abc,'foo','bar']
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']
L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]
print [x[0].split()[0] for x in L]
for i in range(len(L)):
s = L[i][0]
s = s.split(' ')[0]
L[i] = s
Ewwww。学习列表理解,老兄! – ulidtko 2011-04-26 18:37:56
@ulidtko嗯,我给出了一个答案,我会采取的方式去做,并不意味着它必须被接受或upvoted – keepitreall89 2011-04-26 18:39:37
在情况下,您目前,空间总是出现在同一个位置。如果你知道这将是的话,你可以这样做:
L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]
L2 = [x[0][0:3] for x in L]
print L2
输出:
[ 'ABC', '富', '酒吧']
中当然,如果空间可能出现在不同的位置,那么使用str.split()的解决方案之一会更好。
我发现列表理解有时更难看了,我希望保持独立的循环和提取:
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']
我喜欢这些Python速度编码。他们清楚地显示了在Python中编程的快速实践。 ';)' – ulidtko 2011-04-26 18:33:29
当然,如果它总是三个第一个字符,你可以在[L]中使用'[i [0] [0:3]'。 – Benjamin 2011-04-26 19:00:02