Разрежьте на » «пробел в python

#python #slice

#python #разрежьте

Вопрос:

Если L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]

Как бы разрезать L, чтобы получить все до первого пробела

 ['abc,'foo','bar']
  

Комментарии:

1. Мне нравятся эти кодировки скорости Python. Они ясно показывают, насколько быстрое кодирование на Python происходит на практике. ;)

2. Конечно, если вы всегда можете использовать три первых символа [i[0][0:3] for i in L] .

Ответ №1:

 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]
  

Ответ №3:

 for i in range(len(L)):
    s = L[i][0]
    s = s.split(' ')[0]
    L[i] = s
  

Комментарии:

1. Ewwww. Учись понимать списки, чувак!

2. @ulidtko Meh, я дал ответ так, как я бы прибегнул к этому, не означает, что он должен быть принят или поддержан

Ответ №4:

В приведенных вами случаях пробелы всегда встречаются в одном и том же положении. Если вы знаете, что это будет так, вы могли бы сделать что-то вроде:

 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().

Ответ №5:

Я считаю, что понимание списка иногда сложнее для чтения, я бы предпочел разделять цикл и извлечение:

 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']