Могу ли я безопасно смешивать типы в списке Python?

Существуют ли непредвиденные проблемы при смешивании разных типов в списке Python? Например:

import random data = [["name1", "long name1", 1, 2, 3], ["name2", "long name2", 5, 6, 7]] name, long_name, int1, int2, int3 = random.choice(data) 

Я использую этот код для случайного набора нескольких связанных параметров внутри функции, но даже несмотря на то, что Python поддерживает его, я опасаюсь смешивать подобные типы в списке. Поскольку список смешанных типов данных не будет использоваться для какой-либо обработки, кроме как присвоения переменной сам по себе (переменные, которые он присваивает, но не сам список), я предполагаю, что это нормально, но я хочу убедиться, что это не является тайно проблематичным кодом.

3 Solutions collect form web for “Могу ли я безопасно смешивать типы в списке Python?”

Нет проблем, вы можете хранить любой тип внутри списка, в отличие от «старых» дней, когда на других языках были массивы, которые хотели только один тип данных, хранящихся в них.

Поскольку списки также могут хранить другой список, а другие составные структуры данных, а также другие ссылки на объекты, обработка или итерация через список может стать немного более сложной из-за возможных нескольких уровней, чем просто пройти через массив на простой одноуровневой итерации , Это также связано с мелким и глубоким копированием .

Если код, обрабатывающий списки, знает об этом, я не могу думать о каких-либо проблемах из-за этой способности хранить разные вещи в списке.

Язык отлично подходит для вас, смешивая типы в списке, но вы должны знать, что культура Python может на него нахмуриться. Кортежи обычно используются, когда у вас есть известная коллекция смешанных типов, а разные индексы имеют разную семантику. Списки обычно используются там, где у вас есть единая последовательность разной длины.

Таким образом, ваши данные будут более условно представлены в виде:

 data = [ ("name1", "long name1", 1, 2, 3), ("name2", "long name2", 5, 6, 7), ... ] 

Короче говоря: кортежи используются как C-структуры, такие как C-массивы.

Нет никаких неотъемлемых проблем при наличии нескольких типов данных в списке. Проблемы могут возникнуть, если вы попытаетесь использовать этот список для чего-то, что ожидает, что он будет одного типа. В вашем примере, если это все, что вы делаете с этим, нет никакого способа, чтобы это стало проблемой. Однако вы можете рассмотреть использование кортежа вместо списка. По соглашению, кортежи используются, когда состав последовательности фиксирован; списки используются, когда вы можете добавить или удалить из последовательности.

  • Правильный код для удаления гласных из строки в Python
  • python: получить наиболее частое значение в списке словарей
  • Что такое «argv» и что он делает?
  • встроенная функция для вычисления перекрытия в Python
  • Инициализация многомерного массива Python без цикла
  • Несколько логических сравнений в одной строке для оператора if
  • Основные функции и выходы Python
  • Emacs: методы для отладки python
  • Python - лучший язык программирования в мире.