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] - достъп до втория елемент от първия вложен списък.
Добавянето, изтриването и промяната на общия списък, както и на вложените списъци, е подобно на начина, по който се прави с обикновените (едномерни) списъци: