"Это пятый день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 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, и общаться и учиться вместе, все от новичков. Иногда простой вопрос застревает надолго, но, может быть, кто-то другой вдруг это осознает. Я искренне надеюсь, что все могут поделиться прогресс.