Python. Урок 7. Робота зі списками (list)

Одна з ключових особливостей Python, завдяки якій він є таким популярним, – це простота. Особливо підкуповує простота роботи з різними структурами даних – списками, кортежами, словниками та безліччю. Сьогодні ми розглянемо роботу зі списками.

Що таке список (list) у Python?

Список (list) – це структура даних зберігання об'єктів різних типів. Якщо ви використовували інші мови програмування, то має бути знайоме поняття масиву. Так ось, список дуже схожий на масив, тільки, як вже було сказано вище, в ньому можна зберігати об'єкти різних типів. Розмір списку не статичний, його можна змінювати. Список за своєю природою є типом даних, що змінюється. Про типи даних можна докладно прочитати тут. Змінна, визначена як список, містить посилання на структуру пам'яті, яка зберігає посилання на будь-які інші об'єкти або структури.

Як списки зберігаються у пам'яті?

списками

Докладніше ці питання обговорювалися в уроці 3 (Типи та модель даних).

Створення, зміна, видалення списків та робота з його елементами

Створити список можна одним із таких способів.

Також можна створити список із заздалегідь заданим набором даних.

Якщо у вас вже є список і ви хочете створити його копію, можна скористатися наступним способом:

або зробити це так:

Додавання елемента до списку здійснюється за допомогою методу append().

Якщо потрібно видалити елемент за його індексом, скористайтесь командою del имя_списка[индекс].

Змінити значення елемента списку, знаючи його індекс, можна безпосередньо звернувшись до нього.

Очистити список можна просто його проініціалізувавши, так як ніби ви його знову створюєте. Дляотримання доступу до елемента списку вкажіть індекс цього елемента у квадратних дужках.

Можна використовувати негативні індекси, у такому разі рахунок буде йти з кінця, наприклад для доступу до останнього елемента списку можна використовувати таку команду:

Для отримання зі списку деякого підсписку в певному діапазоні індексів вкажіть початковий і кінцевий індекс у квадратних дужках, розділивши їх двокрапкою.

Методи списків

list.append(x)

Додає елемент до кінця списку. Таку ж операцію можна зробити так a[len(a):] = [x].

list.extend(L)

Розширює існуючий список за рахунок додавання всіх елементів зі списку L. Еквівалентно команді a[len(a):] = L.

list.insert(i, x)

Вставити елемент x у позицію i. Перший аргумент – індекс елемента, після якого буде вставлений елемент x.

list.remove(x)

Видаляє перше входження елемента x зі списку.

Видаляє елемент із позиції i та повертає його. Якщо використовувати метод без аргументу, буде видалено останній елемент зі списку.

list.clear()

Видаляє всі елементи зі списку. Еквівалентно del a [:].

list.index(x[, start[, end]])

Повертає індекс елемента.

list.count(x)

Повертає кількість входжень елемента x до списку.

list.sort(key=None, reverse=False)

Сортує елементи у списку зростання. Для сортування у зворотному порядку використовуйте прапор reverse=True. Додаткові можливості відкриває параметр key, за більш детальною інформацією зверніться до документації.

list.reverse()

Змінює порядок розташування елементів у списку зворотний.

Повертає копію списку. Еквівалентно a[:].

List Comprehensions

List Comprehensions найчастіше перекладають українською мовою як абстракція списків або спискове включення, є частиною синтаксису мови, яка надає простий спосіб побудови списків. Найпростіше роботу list comprehensions показати на прикладі. Допустимо вам необхідно створити список цілих чисел від0до n, де n попередньо задається. Класичний спосіб розв'язання цього завдання виглядав би так:

Використання list comprehensions дозволяє зробити це значно простіше:

або взагалі ось так, якщо вам не потрібно більше використовувати n:

P.S.

там помилка Змінити значення елемента списку, знаючи його індекс, можна безпосередньо звернувшись до нього.

>>> d = [2, 4, 9] >>> print(d) [2, 4, 9] >>> d[1] = 17 індекс вказаний перший, отже має змінитися перший елемент. >>> print(d) [2, 17, 9] а тут змінено другий елемент. Висновок повинен виглядати так [17, 4, 9] Якщо я не помиляюся)))

Python елементи списку нумеруються з нуля. Тому в списку [2, 4, 9], елемент з індексом 1 – це 4, і якщо ми зробимо привласнення d[1] = 17, то змінимо середній елемент у списку, оскільки це показано у прикладі! Удачі!

ой дякую за пояснення)) вибачаюсь за хибні звинувачення та неуважність)))

Будь ласка! Дякую вам за інтерес до блогу)))

Звіт починається з нуля

Підкажіть, будь ласка, як швидко (не використовуючи перебір по індексно) перевірити чи довільне значення на одному зі значень списку? Наприклад, у мене є список d=[2,4,12,5] Ввели а=4 Якщо значення а є у списку, то вивести “+”. Якщо ні, то "-"

Можна і не 4 пробіли, а всього 1. А найкраще табуляція.

Її!Потрібно саме чотири)) Але проблему вже вирішено!

можна 1 пробіл, якщо в тому ж рядку

Вітаю! А можете, будь ласка, пояснити, як працює “for in” зі списками. Я не розумію. Я звик до мов, де в основному доступ за індексом, важко зрозуміти роботу for in. Як працює цикл: за індексами від 0 до довжини списку, або аби дістає елемент, тобто. необов'язково щодо зростання індексу елемента? Мені хотілося б знати індекс елемента, який я обробляю в циклі. Краще завести окремо змінну counter, яка рахуватиме або використовуватиме list.index(value). Або у другий випадок викликатиметься не атрибут елемента, а відбуватиметься саме пошук такого елемента, тобто. складність буде лінійною?

Добридень! Постараюся двома словами пояснити, for для списку працює наступним чином: 1. Береться ітератор у списку. Ітератор – це такий об'єкт, який дозволяє отримувати доступ до елементів списку (витягувати їх). Взяти ітератор, це виконати функцію iter(), аргумент якої – список (у разі). 2. На кожній ітерації циклу витягується елемент зі списку (за допомогою функції next()) 3. Кроки 1 і 2 повторюються доки елементи в циклі не закінчаться (ітератор викине виняток StopIteration) Обхід елементів у циклі здійснюється в тому порядку, в якому вони в ньому зберігаються (не аби як!). Для отримання індексу елемента краще використовувати функцію enumerate, ось приклад: >>> a = ['a', 'b', 'c'] >>> for sym in enumerate(a): print(str(sym[0]) + " -- " + str(sym[1])))

Вітаю! Чи можливо за допомогою команди pop видалити кілька елементів списку чи проміжок? Якщо так напишіть, будь ласка, приклад. Що схоже з:

motorcycles_5 = ['ducati', 'honda', 'ktm', 'motogucci','yamaha', 'suzuki', 'ural'] # Видаляю елементи списку motorcycles_5 з 0 по 3 del motorcycles_5[0:3] print(motorcycles_5) # Видаляю всі елементи списку motorcycles_5 за допомогою команди del del motorcycles_5[:] print(motorcycles_5)

Добридень! Ні, за допомогою pop не можна видалити кілька елементів списку. Його призначення - вилучення елемента (найчастіше останнього). А чим вас не влаштовує del?

у прикладі для >>list.insert(i, x) написано так: “Вставити елемент x у позицію i. Перший аргумент – індекс елемента після* якого буде вставлено елемент x.

*хоча, за змістом прикладу, вставка відбувається прямо за індексом i, а не після. Елементи зрушуються.

Для отримання зі списку деякого підсписку в певному діапазоні індексів вкажіть початковий і кінцевий індекс у квадратних дужках, розділивши їх двокрапкою.

Це ж згадується робота з підмножиною елементів списку 'a'. Підмножина списку в python називається зріз (slice)

Чому всі об'єкти мають один список? lis = []

for i in range(4): o = O() o.k.append(i) lis.append(o)

for i in lis: print(i.k)

output: [0, 1, 2, 3] [0, 1, 2, 3] [0, 1, 2, 3] [0, 1, 2, 3]