如果L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]
如何将L切片到第一个空间
['abc,'foo','bar']
答案 0 :(得分: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']
答案 1 :(得分:2)
L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]
print [x[0].split()[0] for x in L]
答案 2 :(得分:1)
for i in range(len(L)):
s = L[i][0]
s = s.split(' ')[0]
L[i] = s
答案 3 :(得分:0)
在您出现的情况下,空格总是出现在同一位置。如果您知道会出现这种情况,您可以执行以下操作:
L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]
L2 = [x[0][0:3] for x in L]
print L2
输出:
['abc','foo','bar']
当然,如果空格可以出现在不同的位置,那么最好使用str.split()之一使用其中一个解决方案。
答案 4 :(得分: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 [将函数应用于列表的每个元素]:
map(extract,L)
['abc', 'foo', 'bar']