Редактирование списка python - PullRequest
0 голосов
/ 14 января 2020

Что я хочу сделать?

Я хочу создать python программу, которая принимает текстовый файл, превращает текст в список строк, подобных этой
['Man', 'request', 'adapted', 'spirits', 'set', 'pressed.', 'Up', 'to'] (1)
, переводит количество букв каждого слова в другой список, подобный этому
[3, 7, 7, 7, 3, 8, 2, 2] (2)
и проверяет, что если номер каждого строкового элемента больше 3 (> 3 ), удаляет его первую букву и добавляет его в конец слова с помощью строки 'xy'. Результат окончательного списка должен быть:
['Man', 'equestrxy', 'daptedaxy', 'piritssxy', 'set', 'ressed.pxy', 'Up', 'to'] (3)

Что я уже сделал? Я сделал (1 ) и (2) частей кода, и в настоящее время я пытаюсь (3) .

Мой код с комментариями:

text = open("RandomTextFile.txt").read().split()  #this is the the part (1) 


#function that creates the second part (2)

def map_(A): return list(map(len, A)) words = map_(text) #list that contains the example list of (2)

#This is the part (3) and I try to achieve it by creating a loop
for i in range(y):
  if words[i]>3:
      text[i] = [x + string for x in text]

Может кто-нибудь подсказать, что я могу сделать для достижения этой части (3)? Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 14 января 2020

Использование списка списков

>>> x = ['Man', 'request', 'adapted', 'spirits', 'set', 'pressed.', 'Up', 'to']
>>> [i[1:] + i[0] + 'xy' if len(i) > 3 else i for i in x]

['Man', 'equestrxy', 'daptedaxy', 'piritssxy', 'set', 'ressed.pxy', 'Up', ' до ']

1 голос
/ 14 января 2020

Для любого слова, подобного этому: t = 'request' Вы можете использовать нарезку:

t[1:]+t[0]+'xy'
1 голос
/ 14 января 2020

Вы можете сделать что-то вроде:

def format_strings(strs):
    len_strs = [len(s) for s in strs]
    return [strs[i][1:] + 'xy' if len_str > 3
        else strs[i] for i, len_str in enumerate(len_strs)]   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...