Если L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]
Как отрезать 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
Я нахожу, что понимание списков иногда труднее читать, я бы предпочел сохранить отдельный цикл и извлечение:
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']
В тех случаях, когда вы присутствуете, пробелы всегда встречаются в одном и том же положении. Если вы знаете, что это будет так, вы можете сделать что-то вроде:
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().
;)
[i[0][0:3] for i in L]
.