#python #for-loop #append
#python #для цикла #добавить
Вопрос:
совершенно новичок в python и пытается изучить циклы for. Пытаюсь взять значения из двух списков для вычисления ИМТ каждого человека, но продолжаю получать пустой список.
heights = [184, 177, 190, 188, 159, 166]
weights = [84.9, 81.8, 86.1, 92.2, 69.6, 72.0 ]
BMIS = []
for i, bmi in BMIS:
BMIS.append(weights[i] / heights[i])
print(BMIS)
Комментарии:
1. Слишком очевидно,
BMIS
это пустой список. итерация будет выполняться 0 раз.
Ответ №1:
Вы выполняете цикл по пустому списку. Просто используйте zip
для перебора каждого списка сразу.
for height, weight in zip(heights, weights):
BMIS.append(weight / height)
Это понимание приведет к тому же списку:
BMIS = [weight/height for height, weight in zip(heights, weights)]
Комментарии:
1. Большое спасибо! Я впервые вижу функцию zip. Отличная помощь!!
Ответ №2:
В списке нет ничего, что вы пытаетесь перебрать. Код в теле цикла for никогда не будет выполнен. Вы можете изменить свой цикл for на:
for height, weight in zip(heights, weights):
BMIS.append(weight/height)
Ответ №3:
Вы перебираете BMI, это пустой список.перебирайте максимумы или веса
heights = [184, 177, 190, 188, 159, 166]
weights = [84.9, 81.8, 86.1, 92.2, 69.6, 72.0 ]
BMIS = []
for i in range(len(heights)):
BMIS.append(weights[i] / heights[i])
print(BMIS)
Комментарии:
1. Никогда не осознавал, и я смотрю на это уже несколько часов, лол. Большое спасибо!
Ответ №4:
Предполагая, что список высот и весов всегда имеет один и тот же len(), вы можете использовать его в качестве своего диапазона
heights = [184, 177, 190, 188, 159, 166]
weights = [84.9, 81.8, 86.1, 92.2, 69.6, 72.0 ]
BMIS = []
for i in range(len(heights)):
BMIS.append(weights[i] / heights[i])
print(BMIS)
Комментарии:
1. Большое спасибо! Не думал, что смогу использовать подобную функцию len, отлично сработало!
Ответ №5:
Добро пожаловать в StackOverflow. Давайте проверим ваш основной цикл for:
for i, bmi in BMIS:
BMIS.append(weights[i] / heights[i])
Поскольку вы инициализируете BMIS = []
, вы выполняете итерацию по пустому списку. Лучшим подходом является повторение в диапазоне, подобном этому:
for i in range(0, len(heights)):
BMIS.append(weights[i] / heights[i])
Таким образом, вы получаете доступ к i-й позиции каждого списка, выполняете разделение и добавляете результат в свой BMIS
список.