#python #python-3.x
#python #python-3.x
Вопрос:
Я довольно новичок в python. Я пытаюсь добиться этого результата:
«Майк, Карен, Джейк, Таша»
Мой код генерирует это:
M, i, k, eK, a, r, e, nJ, a, k, eT, a, s, h, a
Почему метод join не работает? Или что я делаю не так?
def group_list(group, users):
members =''
for user in users:
members = ', '.join(user)
return members
print(group_list("Marketing", ["Mike", "Karen", "Jake", "Tasha"]))
Комментарии:
1. Просто
return ', '.join(users)
2. Аргумент, который вы передаете
', '.join
, должен быть последовательностью. Если вы передаете строку, например'Mike'
, то она обрабатывается как последовательность символов,M,i,k,e
которые вы соединяете запятыми.
Ответ №1:
Если вы ищете самый простой ответ, вот он:
def group_list(group, users):
return ', '.join(users)
В вашем скрипте вы объединяете каждое слово в users, а не сам список пользователей. Чтобы воссоздать эту ошибку для дальнейшего изучения, вы можете написать эту строку:
print(', '.join("Mike"))
# M, i, k, e
Сигнатура join
метода выглядит следующим образом:
string.join(iterable)
Итеративность — это то, что вы можете повторить. Строки считаются итеративным типом данных, аналогичным спискам. Вы можете думать о передаче строки в join
метод аналогично передаче списка — он будет обрабатывать его одинаково.
Ответ №2:
Я заметил, что вы вообще не используете group. Не знаю, для чего это.
Если вы хотите использовать join() , вам не нужен цикл for .
def group_list(group, users):
members = ''
members = ', '.join(users)
return members
Комментарии:
1. Вам тоже не нужно
=
. Вы могли бы просто вернуть', '.join(users)
2. Оооо, еще один способ сократить код, спасибо за предложение!