Яка різниця між списками, масивами та наборами в Python?


Відповідь 1:

Списки:

Вбудований тип із наступними характеристиками.

  • Змінна довжина з максимумом sys.maxsize elementsElements може бути будь-якою - вбудована у типи, спеціальні типи тощо; елементи не мають бути доступними для перегляду. Елементи можуть бути повторені в списку. Елементи не повинні бути одного типу - Ви можете зберігати будь-яке необхідне значення у списку. Кожен елемент у списку зберігається як посилання на інший об'єкт. Списки індексуються лише цілими числами. Списки ітерабельні - тобто ви можете записати для циклу. Списки гетерогенні (змішані типи) замовлений контейнер (впорядковано, як у вмісті підтримують порядок, заданий розробником) - це не те саме, що відсортовано.

Списки мають велику кількість випадків використання: будь-коли вам потрібен контейнер з індексом неінтегратора, список, ймовірно, буде вашим першим варіантом.

Масиви:

Не вбудована - частина модуля масиву.

  • Змінна довжина з максимумом елементів sys.maxsizeElements може бути лише "числовим" - цілим числом, плавцями або символами. Цілі чи плавці повинні визначатися в термінах підписаних, неподписаних довгих і коротких. Символи мають лише унікод. Поплавці є одно- або подвійною точністю. Немає вимоги до елементів, які можуть бути перебірливими (хоча всі цифри все одно). Елементи можуть бути повторені в масиві. Усі елементи повинні бути одного типу з одним масивом. Ви визначаєте тип, який може містити масив під час створення масиву. Кожен елемент у списку зберігається як числове значення в пам'яті (не як посилання на об'єкт. Масиви індексуються лише цілим числом. Масиви ітерабельні - тобто ви можете писати a для loop.arrays - це ефективний однорідний (однотипний) упорядкований індексований контейнер (упорядкований, як у вмісті підтримують порядок, заданий розробником) - це не те саме, що відсортовано.

arraysareprimarilydesignedforpassingdataacrossCtypeinterfacesorbinarydata.Theyarenotafastreplacementsforlistsunlessyoucanguaranteethatyourelementsarewithintherelevantrange;forinstanceanarraywithtypecodeQcannotstoreintegerslargerthan2641(unsignedlonglong),althoughPythonintegersareeffectivelyunlimited(andthereforeconsiderablylargerthanthearraycanhold).arrays are primarily designed for passing data across C type interfaces or binary data. They are not a fast replacements for lists - unless you can guarantee that your elements are within the relevant range; for instance an array with type code ‘Q’ cannot store integers larger than 2^{64}–1 (unsigned long long), although Python integers are effectively unlimited (and therefore considerably larger than the array can hold).

Набори:

Вбудований тип із наступними характеристиками.

  • Змінна довжина з максимумом sys.maxsize elementsElements може бути будь-яким значенням або об'єктом, якщо вони є хешируемими; тож для екземплярів рядки, числа та кортежі можуть бути розміщені у наборі, але списки, словники, наприклад, не можуть бути. Спеціальні типи можна зробити переміщеними. Елементи не можна повторювати протягом набору; це точка. Елементи можуть бути сумішшю типів у межах одного набору. Кожен елемент всередині набору зберігається як посилання на об'єкт неоднорідний (змішаний тип) не упорядкований (розробник не контролює порядок даних під час ітерації.) унікальний неіндексований контейнер для типів, що підлягають перегляду.

Набори в першу чергу розроблені для створення послідовностей унікальних елементів.