Как добавить текст к каждому другому элементу в списке Python? - PullRequest
0 голосов
/ 30 октября 2018

У меня есть список вроде:

mylist = ["1", "2", "3", "4", "5"]

Я хочу добавить текст к каждому другому элементу, чтобы он выглядел так:

mylist = ["1a", "2", "3a", "4", "5a"]

Я написал это, что отлично работает для каждого элемента. Как сделать так, чтобы это применимо только к каждому другому элементу ?

mylist2 = ["a" + item for item in mylist]

Ответы [ 5 ]

0 голосов
/ 31 октября 2018

mylist = ["1", "2", "3", "4", "5"] text_list = [str(x) + 'a' if i % 2 == 0 else x for i, x in enumerate(mylist)]

0 голосов
/ 30 октября 2018

Немного странное решение, в котором используются итераторы:

>>> from itertools import cycle
>>> mylist = ["1", "2", "3", "4", "5"]
>>> suffix = cycle(["a", ""])
>>> [l + s for l, s in zip(mylist, suffix)]
['1a', '2', '3a', '4', '5a']

EDIT

Как предлагает Netwave в комментариях, вот очень супер-питоническое решение!

>>> import itertools, operator
>>> list(map(operator.add, mylist, itertools.cycle(("a", ""))))
['1a', '2', '3a', '4', '5a']
0 голосов
/ 30 октября 2018

используйте enumerate и по модулю для проверки нечетных или четных значений с троичным.

mylist = ["1", "2", "3", "4", "5"]
mylist2 = [item if i%2 else "a" + item for i,item in enumerate(mylist)]

результат:

>>> mylist2
['a1', '2', 'a3', '4', 'a5']

для получения 1a и т. Д. ... просто переключите "a" + item на item + "a"

0 голосов
/ 30 октября 2018

Попробуйте:

for i in range(0, len(mylist), 2):
    mylist[i] = mylist[i] + "a"

РЕДАКТИРОВАТЬ 1:

for i in range(0, len(mylist), 2):
    mylist[i] += "a"
0 голосов
/ 30 октября 2018

Один из способов сделать это будет следующим:

mylist = ["1", "2", "3", "4", "5"]
res = [x + ('a' if i%2 == 0 else '') for i, x in enumerate(mylist)]

, что приводит к:

['1a', '2', '3a', '4', '5a']

Этот подход использует тот факт, что индекс терминов, которые вы хотите изменить при делении на 2, имеет остаток 1. См. по модулю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...