Python, списъци

За да работи с набори от данни, Python предоставя вградени типове като списъци, кортежи и речници.

Списък (списък) е тип данни, който съхранява набор или последователност от елементи. За да създадете списък в квадратни скоби ([]), всичките му елементи се изброяват разделени със запетаи. Много езици за програмиране имат подобна структура от данни, наречена масив. Например, нека дефинираме списък с числа:

Можете също да използвате конструктора list(), за да създадете списък:

И двете дефиниции на списък са подобни - те създават празен списък.

Конструкторът на списък за създаване на списък може да вземе друг списък:

За достъп до елементите на списък трябва да използвате индекси, които представляват номера на елемента в списъка. Индексите започват от нула. Тоест вторият елемент ще има индекс 1. За достъп до елементи от края можете да използвате отрицателни индекси, започвайки от -1. Тоест последният елемент ще има индекс -1, предпоследният ще има индекс -2 и т.н.

Ако искате да създадете списък, който повтаря една и съща стойност няколко пъти, можете да използвате знака звездичка *. Например, нека дефинираме списък от шест петици:

Освен това, ако имаме нужда от последователен списък с числа, тогава е удобно да използваме функцията за диапазон, за да го създадем, която има три форми:

диапазон (край) : създава набор от числа от 0 до край

диапазон (начало, край) : създава набор от числа от началото на числото до края на числото

диапазон (начало, край, стъпка) : създава набор от числа от началото на числото до края на числото със стъпка стъпка

Например, следните две дефиниции на списък ще бъдат подобни, но с функцията за обхват ние намаляваме количеството код:

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

Итерация върху елементи

Можете да използвате както цикъл for, така и цикъл while за итерация през елементите.

Итериране с for цикъл:

Тук вместо функцията диапазон можем незабавно да заменим съществуващия списък от компании.

Итерация с цикъл while:

За да повторим с помощта на функцията len(), получаваме дължината на списъка. С помощта на брояча i отпечатва елемент по елемент, докато стойността на брояча стане равна на дължината на списъка.

Сравнение на списък

Два списъка се считат за равни, ако съдържат еднакъв набор от елементи:

В този случай и двата списъка ще бъдат равни.

Избройте методи и функции

Списъците имат редица методи за манипулиране на елементи. Някои от тях:

append(item) : добавя елемент в края на списъка

вмъкване(индекс, елемент) : добавя елемент елемент към списъка при индекс индекс

remove(item) : премахва елемента item. Премахва се само първото появяване на елемента. Ако елементът не бъде намерен, хвърля изключение ValueError

clear() : премахнете всички елементи от списъка

index(item) : Връща индекса на елемента item. Ако елементът не бъде намерен, хвърля изключение ValueError

pop([index]) : премахва и връща елемента при индекс индекс. Ако не бъде подаден индекс, просто премахва последния елемент.

count(item) : връща броя на срещанията на item в списъка

sort([ключ]) : сортира елементите. Сортира във възходящ ред по подразбиране. Но с помощта на ключовия параметър можем да предадем функция за сортиране.

reverse() : обръща всички елементи в списък

Освен това Python предоставя редица вградени функции за работа.със списъци:

len(списък) : връща дължината на списъка

sorted(list, [key]) : връща сортиран списък

min(списък) : връща най-малкия елемент от списъка

max(списък) : връща най-големия елемент от списъка

Добавяне и премахване на елементи

Методите append() и insert се използват за добавяне на елемент, а методите remove(), pop() и clear() се използват за премахване на елемент.

Проверка дали даден елемент съществува

Ако определен елемент не бъде намерен, тогава методите за премахване и индексиране хвърлят изключение. За да избегнете тази ситуация, преди да работите с елемент, можете да проверите за неговото присъствие, като използвате ключовата дума in:

Изразът елемент в компании връща True, ако елементът е в списъка с компании. Следователно елементът if в конструкцията на компаниите може да изпълни следния блок от изрази в зависимост от това дали елементът е в списъка.

Брой на срещанията

Ако трябва да разберете колко пъти даден елемент присъства в списък, можете да използвате метода count():

Сортиране

Методът sort() се използва за сортиране във възходящ ред:

Ако е необходимо да сортирате данните в обратен ред, тогава можем да приложим метода reverse() след сортиране:

Сортирането всъщност сравнява два обекта и кой е "по-малък" се поставя преди този, който е "по-голям". Понятията "повече" и "по-малко" са доста произволни. И ако при числата всичко е просто – числата са подредени във възходящ ред, то при низовете и другите обекти ситуацията е по-сложна. По-специално, низовете се оценяват на първите знаци. Ако първите символи са равни, вторите символи се оценяват и т.н. При което цифров знак се счита за "по-малко" от азбучен главен знак, а главен знак се счита за по-малък от малък знак. Научете повече за сравнението на низовеописано в статията Операции с низове.

По този начин, ако списъкът комбинира низове с главни и малки букви, тогава можем да получим не съвсем правилни резултати, тъй като за нас низът "bob" трябва да е преди низа "Tom". И за да променим поведението на сортиране по подразбиране, можем да предадем функция като параметър на метода sort():

В допълнение към метода за сортиране можем да използваме вградената функция sorted, която има две форми:

sorted(list) : сортира списъка със списък

sorted(list, key) : сортира списъка със списък чрез прилагане на ключовата функция към елементите

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

Минимални и максимални стойности

Вградените в Python функции min() и max() ви позволяват да намерите съответно минималните и максималните стойности:

Копиране на списъци

Когато копирате списъци, имайте предвид, че списъците представляват променлив тип, така че ако и двете променливи сочат към един и същ списък, тогава промяната на една променлива ще засегне другата променлива:

Копиране на част от списък

Ако е необходимо да копирате не целия списък, а само определена част от него, тогава можем да използваме специален синтаксис. които могат да приемат следните форми:

list[:end] : индексът на елемента, до който трябва да се копира списъкът, се предава през параметъра end

list[start:end] : началният параметър указва индекса на елемента, от който да копирате елементите

list[start:end:step] : Параметърът step указва стъпката, през която ще бъдат копирани елементите от списъка. По подразбиране този параметър е 1.

Свързващи списъци

Операторът за добавяне (+) се използва за комбиниране на списъци:

Списъци на списъци

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

За да се обърнете към елемент от вложен списък, трябва да използвате двойка индекси: потребители[0][1] - достъп до втория елемент от първия вложен списък.

Добавянето, изтриването и промяната на общия списък, както и на вложените списъци, е подобно на начина, по който се прави с обикновените (едномерни) списъци: