Python вопрос о функции соединения, получающий другой вывод - PullRequest
0 голосов
/ 12 июля 2020

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

list = []
for i in range(4):
    l = int(input())
    list.append(l)
    
    
print(str(list))
print("+".join(str(list)))

Вывод:

[1, 2, 3, 4]
[+1+,+ +2+,+ +3+,+ +4+]

Ожидаемый = [1+2+3+4]

Исправьте мой синтаксис

Ответы [ 2 ]

1 голос
/ 12 июля 2020

separator.join(sequence) вставляет separator между каждым элементом в sequence; если sequence - это строка , он просто вставляет разделитель между каждым символом строки.

Я думаю, что root вашей путаницы заключается в том, что вы конвертируете list в строку, когда кажется, что вы действительно хотите превратить каждый элемент в строку (чтобы затем можно было объединить список строк).

lst = [1, 2, 3, 4]
list_as_string = str(lst)
print(list_as_string)
=> "[1, 2, 3, 4]"

Чтобы сделать каждый элемент в списке строкой, вы можете использовать понимание списка. (Составление списков - очень полезные Python инструменты для применения одной и той же операции к каждому элементу в последовательности; если вы не использовали их, ознакомьтесь с этим учебным пособием .)

list_of_strings = [str(i) for i in lst]
print(list_of_strings)
=> ["1", "2", "3", "4"]

Результат этого можно объединить, как и следовало ожидать (и вы можете добавить скобки).

output = "[" + "+".join(list_of_strings) + "]"
print(output)
=> "[1+2+3+4]"

В качестве альтернативы, если по какой-то причине вы определенно хотите сначала преобразовать список в строку, вы можете использовать метод string.replace(old, new), чтобы просто заменить каждый ", " на "+".

print(list_as_string.replace(", ", "+"))
=> "[1+2+3+4]"

Также обратите внимание, что list в Python - это фактическое имя класса list, и переопределять его как обычную переменную - плохая привычка.

1 голос
/ 12 июля 2020

Вы можете использовать split(",") и "+".join(). Также используйте .strip, чтобы удалить пробел. Попробуйте это ниже:

print("+".join(map(str.strip, str(list).split(","))))

Результат:

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