Нужна помощь в понимании моего списка кода python

#python #list

Вопрос:

   students = ['Joe', 'Mary','Amy','Zach','Stan']
  awesome_students =['is awesome' for student in students]
  print(awesome_students)
 

Ожидаемый результат: «Джо потрясающий», «Мэри потрясающая», «Эми потрясающая» и т. Д

Результат, который я получаю: [«потрясающе», «потрясающе» и т. Д. ]

Комментарии:

1. запишите это как цикл for, а затем подумайте, как применить ту же логику внутри понимания

2. student ' is awesome' …!?

Ответ №1:

Вы возвращаете строковый литерал 'is awesome' вместо использования своей student переменной.

Одним из способов форматирования строки с помощью этой переменной является использование строки формата:

awesome_students =[f'{student} is awesome' for student in students]

Другой способ-использование строкового метода .format()

awesome_students =['{} is awesome'.format(student) for student in students]

Еще одно и, вероятно, худшее из всех моих предложений-объединить их вручную с оператором :

awesome_students =[student ' is awesome' for student in students]

Комментарии:

1. эй, спасибо, я думаю, что {студент} — лучший вариант

2. Ага. Представлены в порядке предпочтения.

3. @new_be_0905 не стесняйтесь выбирать тот или иной ответ как правильный, чтобы другие знали, что вам помогло.

Ответ №2:

Вот код, который вам нужен:

  students = ['Joe', 'Mary','Amy','Zach','Stan']
 awesome_students =[f"{student} is awesome" for student in students]
 print(awesome_students)

 

До того, что вы делали, вы сохраняли строку «потрясающе» для каждого студента в списке.

Комментарии:

1. f-строки хороши, если есть форматирование, использовать его для простого объединения строк-излишество (imho) . Просто будет работать: student "is awesome"

2. @OlvinRoght конкатенация запутывает форматирование и пунктуацию. Ваш пример неверен: student "is awesome" должен быть student " is awesome" , что более очевидно, когда это одна строка f'{student} is awesome'

3. @jorf.brunning, я заметил, что слишком поздно пропустил место для редактирования, но я подумал, что мое сообщение довольно очевидно. Для начинающих гораздо проще понять простую конкатенацию, чем исследовать, что означает f префикс и почему имя переменной заключено в фигурные скобки. Кроме того, форматирование потребляет больше ресурсов. Я не против форматирования, но, как и любая другая функция, ее следует использовать специально.

4. Я думаю, что строка f-это то, чему должен научиться новичок, если он посмотрит ее и узнает, что это такое, это может быть полезно для обучения. Тем не менее, я думаю, что объединение также было бы хорошим способом сделать это.