Колекции в Python: Всичко, което трябва да знаете за колекциите на Python



Този блог ще обхваща вградените типове данни за колекции в python заедно с модула за колекции с всички специализирани структури за данни за колекции.

Езикът за програмиране Python има четири типа данни за събиране - списък , кортеж, комплекти и . Но също се предлага с вграден модул, известен като колекции, който има специализирани структури от данни, които основно покриват недостатъците на четирите типа данни. В този блог ще разгледаме подробно всяка от тези специализирани структури от данни. Следват темите, обвити в този блог:

Какво представляват колекциите в Python?

Колекциите в python са основно типове данни за контейнери, а именно списъци, набори, кортежи, речник. Те имат различни характеристики въз основа на декларацията и употребата.





  • Списъкът се декларира в квадратни скоби, той е променлив, съхранява дублиращи се стойности и до елементите може да се осъществи достъп чрез индекси.

  • Кортежът е подреден и неизменяем по своята същност, въпреки че дублиращи се записи могат да бъдат вътре в кортеж.



  • Наборът е неподреден и деклариран в квадратни скоби. Той не е индексиран и няма дублирани записи.

  • Речникът има двойки ключови стойности и има променлив характер. Използваме квадратни скоби, за да декларираме речник.

Това са вградените в контейнера типове данни на python с общо предназначение. Но както всички знаем, python винаги може да предложи нещо допълнително. Той се предлага с модул python, наречен колекции, който има специализирани структури от данни.



Специализирани структури за събиране на данни

Колекции модул в python реализира специализирани структури от данни, които предоставят алтернатива на вградените в Python типове данни за контейнери. Следват специализираните структури от данни в модула за събиране.

  1. namedtuple ()
  2. и
  3. Верижна карта
  4. Брояч
  5. ПоръчанДикт
  6. дефолт
  7. UserDict
  8. UserList
  9. UserString

namedtuple ()

Той връща кортеж с посочен запис, което означава, че ще има име, присвоено на всяка стойност в кортежа. Той преодолява проблема с достъпа до елементите, използвайки стойностите на индекса. С namedtuple () става по-лесен достъп до тези стойности, тъй като не е нужно да запомняте стойностите на индекса, за да получите конкретни елементи.

Как работи?

На първо място, трябва да импортирате модул колекции, той не изисква инсталация.

от колекции импортиране namedtuple

Погледнете следния код, за да разберете как можете да използвате namedtuple.

a = namedtuple ('courses', 'name, tech') s = a ('data science', 'python') print (s) # изходът ще бъде курсове (name = 'python', tech = 'python')

Как да създадете имена, използвайки списък?

s._make (['data science', 'python']) # изходът ще бъде същият като преди.

и

deque, произнася се като ‘deck’ е оптимизиран списък за лесно извършване на вмъкване и изтриване.

Как работи?

#creating a deque from collection import deque a = ['d', 'u', 'r', 'e', ​​'k'] a1 = deque (a) print (a1) # изходът ще бъде deque ([' d ',' u ',' r ',' e ',' k '])

Сега нека да разгледаме как ще вмъкваме и премахваме елементи от deque.

a1.append ('a') print (a1) # изходът ще бъде deque (['d', 'u', 'r', 'e', ​​'k', 'a']) a1.appendleft (' e ') print (a1) # изходът ще бъде deque ([' e ',' d ',' u ',' r ',' e ',' k ',' a '])

Както би трябвало да е очевидно, вмъкването на компонент е подобрено, използвайки deque, също така можете да премахнете компонентите.

a1.pop () print (a1) # изходът ще бъде deque (['e', 'd', 'u', 'r', 'e', ​​'k']) a1.popleft () print (a1 ) # изходът ще бъде deque (['d', 'u', 'r', 'e', ​​'k'])

Подобно на вградените типове данни, има няколко други операции, които можем да извършим върху deque. Като броене на елементи или изчистване на deque и т.н.

ChainMap

Това е речник като клас, който може да направи един изглед на множество съпоставяния. Той основно връща списък с няколко други речника. Да предположим, че имате два речника с няколко двойки ключови стойности, в този случай ChainMap ще направи един списък с двата речника в него.

Как работи?

какви са данните в науката
от колекции импортира ChainMap a = {1: 'edureka', 2: 'python'} b = {3: 'data science', 4: 'Machine learning'} c = ChainMap (a, b) print (c) #the изходът ще бъде ChainMap [{1: 'edureka', 2: 'python'}, {3: 'data science', 4: 'Machine learning'}]

За достъп до или вмъкване на елементи използваме ключовете като индекс. Но за да добавим нов речник в ChainMap, използваме следния подход.

a1 = {5: 'AI', 6: 'невронни мрежи'} c1 = c.new_child (a1) print (c1) # изходът ще бъде ChainMap [{1: 'edureka', 2: 'python'}, { 3: „наука за данните“, 4: „Машинно обучение“}, {5: „AI“, 6: „невронни мрежи“}]

Брояч

Това е подклас на речника, който се използва за преброяване на хешируеми обекти.

Как работи?

от колекции за импортиране Counter a = [1,1,1,1,2,3,3,4,3,3,4] c = Counter (a) print (c) # изходът ще бъде Counter = ({1: 4, 2: 1, 3: 4, 4: 2})

В допълнение към операциите, които можете да извършвате на речник, броячът има още 3 операции, които можем да извършим.

  1. функция на елемента - Връща списък, съдържащ всички елементи в брояча.
  2. Most_common () - Връща сортиран списък с броя на всеки елемент в брояча.
  3. Изваждане () - Взема итеративен обект като аргумент и приспада броя на елементите в брояча.

ПоръчанДикт

Това е подклас на речника, който запомня реда на добавяне на записите. По принцип, дори ако промените стойността на ключа, позицията няма да бъде променена поради реда, в който е бил вмъкнат в речника.

Как работи?

от колекции импортиране OrderedDict od = OrderedDict () od [1] = 'e' od [2] = 'd' od [3] = 'u' od [4] = 'r' od [5] = 'e' od [6] = 'k' от [7] = 'a' print (from) # изходът ще бъде OrderedDict [(1, 'e'), (2, 'd'), (3, 'u'), (4, 'r'), (5, 'e'), (6, 'k'), (7, 'a')]

Няма значение каква стойност се вмъква в речника, OrderedDict запомня реда, в който е била вмъкната, и съответно получава изхода. Дори да променим стойността на ключа. Да кажем, че ако променим ключовата стойност от 4 до 8, редът няма да се промени в изхода.

дефолт

Това е подклас на речника, който извиква фабрична функция за предоставяне на липсващи стойности. По принцип не извежда грешки, когато липсваща стойност на ключ се извиква в речник.

Как работи?

от колекции import defaultdict d = defaultdict (int) # трябва да посочим и тип. d [1] = 'edureka' d [2] = 'python' print (d [3]) # това ще даде изхода като 0 вместо ключова грешка.

UserDict

Този клас действа като обвивка около речникови обекти. Необходимостта от този клас идва от необходимостта да се подкласира директно от дикта. Става по-лесно да работите с този клас, тъй като основният речник се превръща в атрибут.

колекции от класове.UserDict ([начални данни])

Този клас симулира речник. Съдържанието на екземпляра се съхранява в обикновен речник, който може да бъде достъпен с атрибута ‘data’ на класа UserDict. Препратката към първоначалните данни не се запазва, за да се използва за други цели.

UserList

Този клас действа като обвивка около обектите от списъка. Това е полезен основен клас за други списъци като класове, които могат да наследят от тях и да отменят съществуващите методи или дори да добавят по-малко нови.

Необходимостта от този клас идва от необходимостта да се подклас директно от списъка. Става по-лесно да работите с този клас, тъй като основният списък се превръща в атрибут.

колекции от класове.UserList ([списък])

Класът симулира списък. Съдържанието на екземпляра се съхранява в обичайния списък. Подкласовете на списъка се разчитат, за да предложат конструктор, който може да бъде извикан или без никакво, или с едно твърдение.

В този блог научихме за специализираните структури от данни, които се предлагат с модула колекции в python. Оптимизацията води до по-добра производителност и подобрени резултати. Същото се отнася и за нашата собствена кариера и умения. Ако искате да започнете обучението си и да оптимизирате начина, по който възприемате програмирането, регистрирайте се в edureka’s и разгърнете безкрайните възможности с python.

Имате ли въпроси? споменете ги в коментари и ние ще се свържем с вас възможно най-скоро.