Индекс элемента списка, который встречается несколько раз - PullRequest
0 голосов
/ 21 октября 2019

У меня есть следующий код

items = ['a', 'a', 'b', 'a', 'c', 'c', 'd']
for x in items:
    print(x, end='')
    print(items.index(x), end='')
## out puts: a0a0b2a0c4c4d6

Я понимаю, что python находит первый элемент в списке для индексации, но могу ли я вместо этого получить вывод a0a1b2a3c4c5d6? Для меня было бы оптимальным продолжать использовать цикл for, потому что я буду редактировать список. редактировать: я сделал опечатку с индексами c

Ответы [ 3 ]

0 голосов
/ 21 октября 2019

И в случае, если вам действительно хочется сделать это в одну строку:

РЕДАКТИРОВАТЬ - использование .format или строки форматирования делает это короче / более разборчивым, как отмечено в комментариях

items = ['a', 'a', 'b', 'a', 'c', 'c', 'd']
print("".join("{}{}".format(e,i) for i,e in enumerate(items)))

Для Python 3.7 вы можете сделать

items = ['a', 'a', 'b', 'a', 'c', 'c', 'd']
print("".join(f"{e}{i}" for i, e in enumerate(items)))

ORIGINAL

items = ['a', 'a', 'b', 'a', 'c', 'c', 'd']
print("".join((str(e) for item_with_index in enumerate(items) for e in item_with_index[::-1])))

Обратите внимание, что необходимо изменить (item_with_index[::-1]), потому что вы хотите, чтобы элементы печатались до индекса, но enumerate дает кортежи с индексом первым.

0 голосов
/ 21 октября 2019

Я думаю, что вы ищете a0a1b2a3c4c5d6 вместо этого.

for i, x in enumerate(items):
    print("{}{}".format(x,i), end='')
0 голосов
/ 21 октября 2019

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

items = ['a', 'a', 'b', 'a', 'c', 'c', 'd']
for idx, x in enumerate(items):
    print("{}{}".format(x, idx), end='')
# outputs a0a1b2a3c4c5d6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...