Middle
175
Суръати асосии амалиётҳо бо коллексияҳо дар Python чӣ гуна аст?
Ҷавоб аз AI
sobes.tech AI
Қиындығы негізгі операциялардың Python-да коллекциялармен (тізім, сөздік, жиын) таблица түрінде көрсету:
| Операция | Тізім (list) |
Сөздік (dict) |
Жиын (set) |
|---|---|---|---|
| Элемент іздеу | O(n) | O(1) | O(1) |
| Элемент қосу | O(n) | O(1) | O(1) |
| Элемент жою | O(n) | O(1) | O(1) |
| Индекс бойынша қол жеткізу | O(1) | ЖҚА | ЖҚА |
| Өткізу | O(n) | O(n) | O(n) |
| Коллекция ұзындығы | O(1) | O(1) | O(1) |
Түсіндірмелер:
- O(1) - Тұрақты күрделілік: Операция тұрақты уақытта орындалады, коллекцияның өлшеміне тәуелсіз.
- O(n) - Линейлі күрделілік: Операция уақыты коллекцияның өлшеміне пропорционалды.
- Элемент іздеу, қосу және жою тізімдерде элементтердің орын ауыстыруын талап етеді, ол элементтің орналасуына және тізімнің ұзындығына байланысты.
- Сөздіктер мен жиындар хеш-таблицаларды пайдаланады, бұл іздеу, қосу және жою үшін орташа есеппен тұрақты уақытты қамтамасыз етеді. Хеш коллизиялары кезінде бұл операциялар нашарлауы мүмкін, бірақ практикада сирек кездеседі.
- Индекс бойынша қол жеткізу тізімдерде O(1), себебі элементтер жадыда ретімен сақталады.
- Өткізу барлық коллекция элементтерін өту әрқашан олардың санына пропорционалды уақытты алады (O(n)).
- Ұзындығын алу (
len()) барлық осы коллекция түрлері үшін O(1), себебі ұзындық бөлек сақталады.
Мысал: тізімдегі элементті іздеу:
# Тізімде элемент іздеу үшін өтуді қажет етеді
my_list = [1, 2, 3, 4, 5]
if 3 in my_list:
pass # O(n) ең нашар жағдайда
Мысал: сөздікте элемент іздеу:
# Сөздікте элемент іздеу - O(1) орташа
my_dict = {'a': 1, 'b': 2, 'c': 3}
if 'b' in my_dict:
pass # O(1) орташа
Мысал: тізімнің соңына элемент қосу:
# Тізімнің соңына элемент қосу - O(1) орташа (амортизирленген)
my_list = [1, 2, 3]
my_list.append(4) # O(1) орташа
Мысал: тізімнің басына элемент қосу:
# Тізімнің басына элемент қосу - O(n)
my_list = [1, 2, 3]
my_list.insert(0, 0) # O(n)