"Это пятый день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г.".
Рабочая среда
питон: 3.8.3
jupyter-notebook : 6.4.0
Примечание: случай в этой статье может быть непосредственноjupyter-notebookработает наPyCharmСлова выше нужно добавить в последнее предложение кодаprintОй!
Список операций
list()
list()Преобразование итерируемого объекта в список.
Пример ?️
list((0,1,2)) + list({0,1,2}) + list('012')
| вывод: [0, 1, 2, 0, 1, 2, '0', '1', '2'] |
|---|
| Преобразовывайте кортежи, наборы и строки в списки и объединяйте их с помощью операторов. |
Пример ?️
list(range(3))
| вывод: [0, 1, 2] |
|---|
| Преобразование итерируемого в список |
list.append()
lst = ['Python', 'Java']
lst.append('C')
lst
| вывод: ['Питон', 'Ява', 'С'] |
|---|
list.extend()
extend()Добавьте итерируемый объект в конец списка (список, кортеж, словарь, строка), чтобы расширить список.
1️⃣ добавить список
lst = ['Python', 'Java', 'C']
lst.extend([1, 2, 3])
lst
| вывод: ['Python', 'Java', 'C', 1, 2, 3] |
|---|
2️⃣ добавить строку
lst = ['Python', 'Java', 'C']
lst.extend('123')
lst
| вывод: ['Python', 'Java', 'C', '1', '2', '3'] |
|---|
| Добавить каждый символ в строке как элемент в конец исходного списка |
3️⃣ Добавить коллекцию
lst = ['Python', 'Java', 'C']
lst.extend({1,2,3})
lst
| вывод: ['Python', 'Java', 'C', 1, 2, 3] |
|---|
4️⃣ добавить словарь
lst = ['Python', 'Java', 'C']
lst.extend({1: 'b', 2: 'a'})
lst
| вывод: ['Python', 'Java', 'C', 1, 2] |
|---|
| Добавить только ключевое значение словаря в конец исходного списка |
list.insert()
insert(index, object)вставляет указанный объект в списокindexрасположение, первоначальноindexместоположение и> indexЭлемент элемента перемещается назад целиком.
Пример ?️
lst = ['Python', 'Java', 'C']
lst.insert(1, 'C++')
lst
| вывод: ['Python', 'C++', 'Java', 'C'] |
|---|
Пример ?️
lst = ['Python', 'Java', 'C']
lst.insert(6, 'C++')
lst
| вывод: ['Python', 'Java', 'C', 'C++'] |
|---|
когдаindexдобавляется в конец списка, когда значение превышает длину списка. |
list.pop()
pop(index=-1)Удаляет элемент в указанной позиции в списке (последний по умолчанию) и возвращает значение удаленного элемента. если указаноindexЕсли значение превышает длину списка, будет сообщено об ошибке.
lst = ['Python', 'Java', 'C']
lst.pop(1), lst
| вывод: ('Java', ['Python', 'C']) |
|---|
список.удалить(элемент)
lst.remove(value)удалить первое вхождение в спискеvalue, без возвращаемого значения, изменить список напрямую; еслиvalueЕсли его нет в списке, будет сообщено об ошибке.
Пример ?️
lst = ['Python', 'Java', 'C', 'Python']
lst.remove('Python')
lst
| вывод: ['Java', 'C', 'Python'] |
|---|
Только первое появлениеPython |
Пример ?️
lst = ['Python', 'Java', 'C', 'Python']
lst.remove('HTML')
lst
| вывод: ValueError: list.remove(x): x нет в списке |
|---|
HTMLНет в списке, произошла ошибка |
list.clear()
list.clear()Удаляет все элементы из списка, не возвращает значения.
lst = ['Python', 'Java', 'C']
lst.clear()
lst
| вывод: [] |
|---|
list.index()
index(value, start, stop)Возвращает индекс первого элемента, найденного в списке, который соответствует значению, к которому можно получить доступ[start, stop)Укажите диапазон поиска.
Пример ?️
lst = ['Python', 'Java', 'C',
'Python', 'Python']
lst.index('Python')
| вывод: 0 |
|---|
| Не указывать диапазон, найти все элементы в списке |
Пример ?️
lst = ['Python', 'Java', 'C',
'Python', 'Python']
lst.index('Python', 1, 3)
| вывод: ValueError: «Python» отсутствует в списке |
|---|
Укажите диапазон [1, 3) , т.е. посмотрите в ['Java', 'C']PythonЯвно не существует, возникает ошибка |
list.count()
count(value)возвращениеvalueСколько раз оно появляется в списке. Если не нашел в спискеvalueвозвращает 0 .
Пример ?️
lst = ['Python', 'Java', 'C',
'Python', 'Python']
lst.count('Python')
| выход: 3 |
|---|
Пример ?️
lst = ['Python', 'Java', 'C',
'Python', 'Python']
lst.count('Py')
| вывод: 0 |
|---|
В списке нет элементов'Py', который возвращает 0 . |
list.reverse()
reverse()Отсортируйте список в обратном порядке без возвращаемого значения.
lst = [1, 5, 9, 2]
lst.reverse()
lst
| вывод: [2, 9, 5, 1] |
|---|
list.sort()
sort()Отсортируйте список указанным образом, измените исходный список, и сортировка будет стабильной (то есть порядок двух одинаковых элементов не изменится из-за сортировки).
- ключ:указывает, что каждый элемент в итерации сортируется этой функцией
-
обеспечить регресс:
Falseв порядке возрастания,Trueв порядке убывания.
Пример ?️
lst = [1, 5, 9, 2]
lst.sort()
lst
| вывод: [1, 2, 5, 9] |
|---|
Пример ?️
lst = ['Python', 'C', 'Java']
lst.sort(key=lambda x:len(x), reverse=False)
lst
| вывод: ['C', 'Java', 'Python'] |
|---|
уточнитьkeyВычислить длину каждого элемента в списке и отсортировать по длине в порядке возрастания |
list.copy()
copy()Скопируйте список и верните вновь сгенерированный список, где копиямелкая копия, ниже будет объяснено, почему он конкретно говорит, что этомелкая копия.
Пример ?️
lst = [[1,2,3], 'a' ,'b']
lst_copy = lst.copy()
lst_copy.pop()
lst, lst_copy
| вывод: ([[1, 2, 3], 'а', 'б'], [[1, 2, 3], 'а']) |
|---|
правильноlstпровестиcopy, затем удалите списокlst_copyпоследний элемент , в это времяlstПоследний элемент не удаляется, указывая на то, что адреса, на которые указывают два списка, действительно различны. |
Пример ?️
lst = [[1,2,3], 'a' ,'b']
lst_copy = lst.copy()
lst_copy[0].pop()
lst_copy.pop()
lst, lst_copy
| вывод: ([[1, 2], 'а', 'б'], [[1, 2], 'а', 'б']) |
|---|
Здесь выполняется та же операция, что и в предыдущем примере, но на этот раз удаляется еще один фрагмент данных, то есть последний элемент во вложенном подсписке списка.Понаблюдайте за результатом и обнаружите, что на этот раз не толькоlst_copyСписок изменений, оригинальный списокlstСписок вложенных слов также изменился. Это означает, что адреса, на которые указывают два списка, разные, но адреса, на которые указывают подсписки, одинаковы. |
Расширения: прямое назначение, неглубокая копия, глубокая копия
(1) Прямое назначение, передача только ссылки на объект. Если исходный список изменится, назначенный объект также сделает то же самое.
(2) Неглубокая копия, ни один подобъект не копируется, поэтому, если исходный подобъект данных изменится, скопированный подобъект также изменится.
(3) Глубокая копия, включая копии подобъектов в объекте, поэтому изменения в исходном объекте не вызовут изменений каких-либо подэлементов в глубокой копии, и они полностью независимы.
1️⃣Первый взгляд на прямое присвоение
lst = [1,2,3,[1,2]]
list1 = lst
# --直接赋值--
lst.append('a')
list1[3].append('b')
print(lst,'地址:',id(lst))
print(list1,'地址:',id(list1))
# [1, 2, 3, [1, 2, 'b'], 'a'] 地址: 2112498512768
# [1, 2, 3, [1, 2, 'b'], 'a'] 地址: 2112498512768
несмотря ни на чтоlstвсе ещеlist1Изменения происходят, и оба будут затронуты.
2️⃣Необходимо использовать неглубокую копиюcopyмодуль или использоватьlist.copy()тот же эффект
from copy import copy
lst = [1, 2, 3, [1, 2]]
list2 = copy(lst)
# --浅拷贝--
lst.append('a')
list2[3].append('b')
print(lst,'地址:',id(lst))
print(list2,'地址:',id(list2))
# [1, 2, 3, [1, 2, 'b'], 'a'] 地址: 2112501949184
# [1, 2, 3, [1, 2, 'b']] 地址: 2112495897728
lstиlist2Адреса разные, но адреса подсписков все те же, и когда элементы в подсписках изменяются, затрагиваются оба.
3️⃣Необходимо использовать глубокую копиюcopyв модулеdeepcopy, эти два списка полностью независимы.
from copy import deepcopy
lst = [1, 2, 3, [1, 2]]
list3 = deepcopy(lst)
# --深拷贝--
lst.append('a')
list3[3].append('b')
print(lst,'地址:',id(lst))
print(list3,'地址:',id(list3))
# [1, 2, 3, [1, 2], 'a'] 地址: 2112506144192
# [1, 2, 3, [1, 2, 'b']] 地址: 2112499460224
По результатам видно, что при изменении значений в подсписке исходный список не изменился.
Это все для этой статьи, если вы чувствуете себя хорошо.❤ Ставь лайк и вперед! ! ! ❤
Для началаPythonИли хотите начатьPythonДрузья, вы можете искать [Python New Horizons] через WeChat, и общаться и учиться вместе, все от новичков. Иногда простой вопрос застревает надолго, но, может быть, кто-то другой вдруг это осознает. Я искренне надеюсь, что все могут поделиться прогресс.