Как использовать для цикла в списке в Python 3? - PullRequest
0 голосов
/ 19 января 2019

У меня есть вопрос о написании циклов в python 3.

В принципе, я не понимаю, как писать для цикла, если у меня есть список, который содержит два элемента, как этот:

list1 = [("Berlin", 22), ("Zagreb", 30), ("New York", 25), ("Chicago", 20), ("Paris", 29)]

Это в основном список, который содержит города и их температуры в градусах Цельсия, и я хотел бы создать новый список, который содержит города, но теперь их температуру в градусах Фаренгейта. Формула:

F ° = (9/5) * C ° + 32

Я не понимаю, как мне перебрать этот список, который содержит два элемента в каждом члене.

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Первое, что вам нужно знать, это получить доступ к элементам в 2D-списке. Согласно вашему list1, город находится на 0-й позиции, а температура на 1-й позиции подряд. Внутри простого цикла вы можете получить доступ к ним следующим образом. Не забудьте сохранить отступ, чтобы указать тело цикла for.

for element in list1:
    city = element[0]
    temp_c = element[1]

Затем вы можете напрямую использовать temp_c для вычисления температуры в градусах Фаренгейта (temp_f), в пределах цикла.

temp_f = (9 / 5) * temp_c + 32

Следующая задача - добавить вычисленные значения temp_f в новый список (list2) вместе с названием города.

list2.append((city, temp_f))

Но перед этим вы должны определить list2. (где-то рядом вы определяете list1)

list2 =[]

Итак, все готово. Вы можете проверить это, используя оператор печати. ​​

for element in list2:
    print(element)

Этот код может быть реализован намного короче. Я расширяю его, чтобы уменьшить сложность. Надеюсь, ты понял.

0 голосов
/ 19 января 2019

Используйте понимание списка:

list1 = [("Berlin", 22), ("Zagreb", 30), ("New York", 25), ("Chicago", 20), ("Paris", 29)]

list2 = [(city, 9/5 * temp + 32) for city, temp in list1]

print(list2)
# [('Berlin', 71.599999999999994), ('Zagreb', 86.0), ('New York', 77.0), ('Chicago', 68.0), ('Paris', 84.200000000000003)]

Здесь вы перебираете список кортежей, получая названия городов до city и температуру в градусах Цельсия до temp и конвертируя Цельсий в Фаренгейт.

Без понимания списка:

list2 = []

for city, temp in list1:
    list2.append((city, 9/5 * temp + 32))

print(list2)
# [('Berlin', 71.599999999999994), ('Zagreb', 86.0), ('New York', 77.0), ('Chicago', 68.0), ('Paris', 84.200000000000003)]
...