Python работа со списком¶
Важно
Методы списков меняют содержимое списка на месте
Определение списка¶
В квадратных скобках [] идет перечисление элементов list1 = [элемент1, элемент2, элемент3]
#п.э. конструкция типа вернет пустышку "none"
In [434]: fdb1 = [0,10,30,40,20,40]
In [435]: fdb1 = fdb1.sort()
In [437]: fdb1
" "
Работа со списком¶
Так же как со строками есть диапазоны, срезы шаги
In [243]: list1 = [100, 200, 300,400, 500, 600, 700]
In [244]: list1
Out[244]: [100, 200, 300, 400, 500, 600, 700]
In [245]: list1[0]
Out[245]: 100
In [246]: list1[-1]
Out[246]: 700
In [247]: list1[1:5]
Out[247]: [200, 300, 400, 500]
In [248]: list1[:5]
Out[248]: [100, 200, 300, 400, 500]
In [249]: list1[:-1]
Out[249]: [100, 200, 300, 400, 500, 600]
In [250]: list1[::2]
Out[250]: [100, 300, 500, 700]
In [251]: list1[::-1]
Out[251]: [700, 600, 500, 400, 300, 200, 100]
Список списков¶
In [256]: mac_address_table = [['Gi2/1', '0000.5e00.0101', 'dynamic ip', 'GigabitEthernet2/1'],
...: ['Gi2/2', '001a.4a16.010b', 'dynamic ip', 'GigabitEthernet2/2'],
...: ['Gi2/3', '001a.4a16.010c', 'dynamic ip', 'GigabitEthernet2/3']]
In [257]: mac_address_table
Out[257]:
[['Gi2/1', '0000.5e00.0101', 'dynamic ip', 'GigabitEthernet2/1'],
['Gi2/2', '001a.4a16.010b', 'dynamic ip', 'GigabitEthernet2/2'],
['Gi2/3', '001a.4a16.010c', 'dynamic ip', 'GigabitEthernet2/3']]
#Тогда аналогично работы с одиночны списком получаем
In [275]: mac_address_table[0]
Out[275]: ['Gi2/1', '0000.5e00.0101', 'dynamic ip', 'GigabitEthernet2/1']
In [276]: mac_address_table[1]
Out[276]: ['Gi2/2', '001a.4a16.010b', 'dynamic ip', 'GigabitEthernet2/2']
In [277]: mac_address_table[0][1:2]
Out[277]: ['0000.5e00.0101']
In [278]: mac_address_table[0][0:2]
Out[278]: ['Gi2/1', '0000.5e00.0101']
#Обратное отображение элемнтов двойного списка
In [280]: mac_address_table[0][::-1]
Out[280]: ['GigabitEthernet2/1', 'dynamic ip', '0000.5e00.0101', 'Gi2/1']
Именения значений списка и присвоение списка¶
#Меняем значение элдемнета в списке
In [299]: mac_address_table[0][0]='Gi2/1/1'
In [300]: mac_address_table
Out[300]:
[['Gi2/1/1', '0000.5e00.0101', 'dynamic ip', 'GigabitEthernet2/1'],
['Gi2/2', '001a.4a16.010b', 'dynamic ip', 'GigabitEthernet2/2'],
['Gi2/3', '001a.4a16.010c', 'dynamic ip', 'GigabitEthernet2/3']]
# Присваиваем список другому списку
In [301]: fdb1 = mac_address_table
# id при этом у них одинаковое
# Это значит, что по сути данные списки указываю
# на одну и ту же область памяти
In [302]: id(mac_address_table)
Out[302]: 140236437906248
In [303]: id(fdb1)
Out[303]: 140236437906248
In [304]: fdb1
Out[304]:
[['Gi2/1/1', '0000.5e00.0101', 'dynamic ip', 'GigabitEthernet2/1'],
['Gi2/2', '001a.4a16.010b', 'dynamic ip', 'GigabitEthernet2/2'],
['Gi2/3', '001a.4a16.010c', 'dynamic ip', 'GigabitEthernet2/3']]
# При изменение значения в одном таком списке следует, что и спорой список
# поменяет значение, т.к. это одна и та же обласить памяти
In [305]: mac_address_table[1][0]='Gi2/2/1'
In [306]: fdb1
Out[306]:
[['Gi2/1/1', '0000.5e00.0101', 'dynamic ip', 'GigabitEthernet2/1'],
['Gi2/2/1', '001a.4a16.010b', 'dynamic ip', 'GigabitEthernet2/2'],
['Gi2/3', '001a.4a16.010c', 'dynamic ip', 'GigabitEthernet2/3']]
Создание копии списка¶
# Создадим список
In [340]: fdb1= [1,2,3]
# Присвоим его другому списку
In [341]: fdb2 = fdb1
In [343]: fdb1
Out[343]: [1, 2, 3]
In [344]: fdb2
Out[344]: [1, 2, 3]
# Чтобы сделать новую копию независимую от существующей
# надо использовать copy(), тогда выделяется новая область памяти,
# куда копируются значения списка
In [342]: fdb3 = fdb1.copy()
In [345]: fdb3
Out[345]: [1, 2, 3]
# Из вывода видно, что fdb1 и fdb2 ссылаются
# на одну и ту же область памяти
# а fdb3 на другую
In [346]: id(fdb1)
Out[346]: 140236437784520
In [347]: id(fdb2)
Out[347]: 140236437784520
In [348]: id(fdb3)
Out[348]: 140236438565128
# соответственно при изменении данных в fdb1
In [349]: fdb1[0] = 10
In [350]: fdb1
Out[350]: [10, 2, 3]
# данные в fdb2 меняются
In [351]: fdb2
Out[351]: [10, 2, 3]
# А в fdb3 остаются прежними
In [352]: fdb3
Out[352]: [1, 2, 3]
Методы работы со списком¶
Добавление элемента в конец списка - append¶
In [359]: fdb1
Out[359]: [10, 2, 3]
In [366]: fdb1.append(4)
In [367]: fdb1
Out[367]: [1, 2, 3, 4]
Очистить список - clear¶
In [371]: fdb1.clear()
In [372]: fdb1
Out[372]: []
Добавление элемента в середину списка - insert¶
In [380]: fdb1.insert(2,250)
In [381]: fdb1
Out[381]: [100, 200, 250, 300]
Добавление несколько элементов в конец списка - extend¶
# !Особенность заключается в том, что extend добавляет именно список!
In [385]: fdb1.extend([400,500])
In [386]: fdb1
Out[386]: [100, 200, 250, 300, 400, 500]
Варианты объединения списков¶
In [387]: fdb1 =[10,20,30]
In [388]: fdb2 =[100,200,300]
#Можно сложить
In [389]: fdb1+fdb2
Out[389]: [10, 20, 30, 100, 200, 300]
# extend сразу же добавит в список
In [390]: fdb1.extend(fdb2)
In [391]: fdb1
Out[391]: [10, 20, 30, 100, 200, 300]
# Можно просто объединить списки в один из существующих
In [392]: fdb1 =[10,20,30]
In [393]: fdb2 =[100,200,300]
In [394]: fdb1 = fdb1+fdb2
In [395]: fdb1
Out[395]: [10, 20, 30, 100, 200, 300]
Удаление элементов списка - pop¶
In [395]: fdb1
Out[395]: [10, 20, 30, 100, 200, 300]
# Удаляет последний элемент списка
In [396]: fdb1.pop()
Out[396]: 300
In [397]: fdb1
Out[397]: [10, 20, 30, 100, 200]
In [400]: fdb1
Out[400]: [10, 20, 30, 100, 200]
# Удаление первого элемента списка
In [401]: fdb1.pop(1)
Out[401]: 20
In [402]: fdb1
Out[402]: [10, 30, 100, 200]
# Удаление нулевого элемента списка
In [403]: fdb1.pop(0)
Out[403]: 10
In [404]: fdb1
Out[404]: [30, 100, 200]
Удаление элементов списка по значению - remove()¶
In [422]: fdb1 = [0,10,20,30,40,20]
# Удаляет оди первый по счету элемент списка со значением 20
In [423]: fdb1.remove(20)
In [424]: fdb1
Out[424]: [0, 10, 30, 40, 20]]
Сортировка списка - sort()¶
Работает только со списком
In [424]: fdb1
Out[424]: [0, 10, 30, 40, 20]
In [425]: fdb1.sort()
In [426]: fdb1
Out[426]: [0, 10, 20, 30, 40]
Сортировка - sorted() - работает для любых элеменитов, возвращает список¶
In [427]: fdb1 = [0,10,30,40,20,40]
# Сортирует список
In [428]: sorted(fdb1)
Out[428]: [0, 10, 20, 30, 40, 40]
In [429]: fdb1
Out[429]: [0, 10, 30, 40, 20, 40]
In [430]: fdb1 = sorted(fdb1)
In [431]: fdb1
Out[431]: [0, 10, 20, 30, 40, 40]
# Сортирует строку
In [433]: sorted('test 1')
Out[433]: [' ', '1', 'e', 's', 't', 't']
Переобразование через разделители строки в спискок и обратно split/join¶
In [438]: str1 = '1,2,3,4,5'
# преобразуем строку разделенную запятой в список
In [440]: str1.split(',')
Out[440]: ['1', '2', '3', '4', '5']
In [441]: list1 = str1.split(',')
# Преобразуем список в строку, где элементы списка разделены
In [442]: list1
Out[442]: ['1', '2', '3', '4', '5']
# запятой
In [444]: ','.join(list1)
Out[444]: '1,2,3,4,5'
In [447]: sep=','
In [448]: sep.join(list1)
Out[448]: '1,2,3,4,5'
# ничем
In [445]: ''.join(list1)
Out[445]: '12345'
# пробелом
In [446]: ' '.join(list1)
Out[446]: '1 2 3 4 5'
Последнее обновление: 2023-05-29