Выбирает ли Python элемент / индекс кортежа «по умолчанию»?

#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 не проверяет типы по умолчанию, поэтому вы можете безопасно присвоить любой переменной значение любого типа, которое вы хотите.