Почему мой цикл for возвращает символы в строках

#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. Оооо, еще один способ сократить код, спасибо за предложение!