#python #tuples
#python #кортежи
Вопрос:
Представьте себе следующую функцию:
def getMinAndMax(numbers):
return min(numbers), max(numbers)
Что произойдет, если я это сделаю?
num = getMinAndMax([1,2,3,4,5])
num
Примет значение первого элемента в кортеже, min
или произойдет что-то еще? Я знаю, что могу просто попробовать, но я ищу здесь какое-то определенное поведение Python.
Комментарии:
1. Я этого не понимаю. Ваша функция вернет кортеж (1, 5) (и это будет значение num).
2. попытка этого не покажет вам поведение?
3. Почему «что-то еще произойдет»? Кортежи упорядочены и неизменяемы.
Ответ №1:
Ваша функция возвращает двухэлементный кортеж, min([1, 2, 3, 4, 5]), max([1, 2, 3, 4, 5])
который оценивается как 1, 5
. Итак, утверждение
num = getMinAndMax([1,2,3,4,5])
будет привязано имя num
к кортежу (1, 2)
, и вы сможете получить доступ к отдельным значениям как num[0]
и num[1]
. Однако Python позволяет вам использовать то, что обычно называется назначением распаковки, которое выглядит следующим образом:
nmin, nmax = getMinAndMax([1, 2, 3, 4, 5])
Это привязывает каждое имя к следующему элементу кортежа с правой стороны и позволяет использовать значения без индексации. Если вам нужен кортеж результатов, ваша формулировка проще всего, хотя, конечно, выражение (nmin, nmax)
воссоздаст его из второго.
Комментарии:
1. Оглядываясь назад, это был глупый вопрос в первую очередь. Хороший ответ, хотя
Ответ №2:
num
будет кортеж. В вашем примере значение num
будет равно (1,5)
. Python не проверяет типы по умолчанию, поэтому вы можете безопасно присвоить любой переменной значение любого типа, которое вы хотите.