Как извлечь часть списка строк? - PullRequest
0 голосов
/ 06 января 2019

У меня есть список строк, и я хочу извлечь первые 6 символов каждой строки и сохранить их в новом списке.

Я могу пройтись по списку, извлечь первые 6 символов и добавить их в новый список.

y = []
for i in range(len(x)):
    y.append(int(x[i][0:6]))

Я хочу знать, есть ли элегантное однострочное решение для этого. Я попробовал следующее:

y = x[:][0:6]

Но он возвращает список первых 6 строк.

Ответы [ 5 ]

0 голосов
/ 06 января 2019

Вы также можете использовать карту для этого:

list(map(lambda w: int(w[:6]), x))

и использование itertools.islice:

list(map(lambda w:list(int(itertools.islice(w, 6))), x))
0 голосов
/ 06 января 2019

Да, есть. Вы можете использовать следующее список-понимание.
newArray = [x[:6] for x in y]

Нарезка имеет следующий синтаксис: list[start:end:step]

Аргументы:

start - начальное целое число, с которого начинается разрезание объекта
stop - целое число, до которого происходит нарезка. Нарезка останавливается при остановке индекса - 1.
шаг - целочисленное значение, которое определяет приращение между каждым индексом для нарезки


Примеры:


    list[start:end] # get items from start to end-1
    list[start:]    # get items from start to the rest of the list
    list[:end]      # get items from the beginning to the end-1 ( WHAT YOU WANT )
    list[:]         # get a copy of the original list

если start или end равен -negative, он будет считаться от end


    list[-1]    # last item
    list[-2:]   # last two items
    list[:-2]   # everything except the last two items
    list[::-1]  # REVERSE the list

Демо
скажем, у меня есть array = ["doctorWho","Daleks","Cyborgs","Tardis","SonicSqrewDriver"]

и я хочу получить first 3 предметов.

>>> array[:3] # 0, 1, 2 (.. then it stops)
['doctorWho', 'Daleks', 'Cyborgs']

(или я решил изменить его):

>>> array[::-1]
['SonicSqrewDriver', 'Tardis', 'Cyborgs', 'Daleks', 'doctorWho']

(теперь я бы хотел получить последний предмет)

>>> array[-1]
'SonicSqrewDriver'

(или последние 3 элемента)

>>> array[-3:]
['Cyborgs', 'Tardis', 'SonicSqrewDriver']
0 голосов
/ 06 января 2019

Это может помочь

stringList = ['abcdeffadsff', 'afdfsdfdsfsdf', 'fdsfdsfsdf', 'gfhthtgffgf']
newList = [string[:6] for string in stringList]
0 голосов
/ 06 января 2019

Попробуйте это

ans_list = [ element[:6] for element in list_x ]
0 голосов
/ 06 января 2019

Попробуйте это:

y = [z[:6] for z in x]

Это было так же, как это:

y = []               # make the list
for z in x:          # loop through the list
    y.append(z[:6])  # add the first 6 letters of the string to y
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...