Добавить строку в конец каждого номера в списке

Вот что я имею сейчас:

L1 = range(0,3,1)
num = str(L1)
L2 = ';1'
path = [i + ";1" for i in num]
print(path)

что дает мне это:

['[;1', '0;1', ',;1', ' ;1', '1;1', ',;1', ' ;1', '2;1', '];1']

но я хочу, чтобы это выглядело так:

0;1
1;1
2;1

Цель состоит в том, чтобы использовать это в скрипте кузнечика для создания новых путей, которые могут заменить существующие пути.

2 ответа

Решение

Проблема в том, что num = str(L1) преобразует весь L1 список в строку, но вы хотите конвертировать только элементы L1 список в строку.

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

path = [str(i) + ";1" for i in range(0,3,1)]
for line in path:
    print(line)

Выход:

0;1
1;1
2;1

Пытаясь следовать вашей логике, я думаю:

L1 = [str(i) for i in range(0,3,1)]
#=> ['0', '1', '2']

Итак, воедино:

L1 = [str(i) for i in list(range(0,3,1))]
L2 = ';1'
path = [i + L2 for i in L1 ]
print(path)
#=> ['0;1', '1;1', '2;1']

Затем вы можете перебирать элементы путей и распечатывать их по своему желанию.

Если вы попробовали print(num) после второй строки вы бы поняли, что num = '[0, 1, 2]' или num = 'range(0, 3)'зависит от вашего компилятора, и это уже строка. Вот почему, когда вы пытались пройти черезnum, у тебя есть все эти вещи.

Вместо этого попробуйте:

L1 = range(0,3,1)
num = str(L1)
L2 = ';1'
for i in L1:
    print(str(i) + L2)

или

path = [str(i) + L2 for i in L1]

если вы хотите поместить их в единый список.

Другие вопросы по тегам