Sobes.tech
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)