Как добавить для l oop внутри .join () в python - PullRequest
0 голосов
/ 28 апреля 2020

Я нашел людей, делающих что-то похожее на это в Codewars. Но для меня как-то это никогда не работает. Может кто-нибудь, пожалуйста, скажите мне, что не так в этом коде и что я должен сделать, чтобы исправить это. Заранее спасибо!

PS: я знаю, что запись для l oop снаружи решает эту проблему, но я хочу, чтобы мой код был аккуратным и лаконичным: D Редактировать: Спасибо, ребята. Это сработало!

names = ["Alexa","Siri","Cortana"]
print(" ".join("Hello there ",(i for i in names)))

Вот фиксированный код:

names = ["Alexa","Siri","Cortana"]
print("".join([f"Hello there {i}!\n" for i in names]))

Ответы [ 3 ]

1 голос
/ 28 апреля 2020

Вам необходимо отформатировать значение в объединяемой строке:

names = ["Alexa","Siri","Cortana"]
print(" ".join(f"Hello there {i}" for i in names))

Вывод:

Hello there Alexa Hello there Siri Hello there Cortana
1 голос
/ 28 апреля 2020

Попробуйте: -

names = ["Alexa","Siri","Cortana"]

print(', '.join(['Hello there ' + i for i in names]))

Вывод: -

'Hello there Alexa,  Hello there Siri,  Hello there Cortana'
0 голосов
/ 28 апреля 2020

Во-первых, это не для l oop, это выражение генератора (в вашем случае) или понимание списка / dict / set. Во-вторых, str.join принимает только один аргумент, а вы предоставили два - хотите, чтобы ваш вывод был: Hello there Alexa Hello there Siri Hello there Cortana или Hello there Alexa Siri Cortana? В зависимости от ответа, код может быть:

print(" ".join("Hello there " + x for x in names))

или

print("Hello there " + " ".join(names))
...