Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
develop:pyton:lists [2022/02/16 18:02] admin |
develop:pyton:lists [2022/12/18 16:04] (текущий) admin |
||
---|---|---|---|
Строка 68: | Строка 68: | ||
>> 26 | >> 26 | ||
</ | </ | ||
+ | |||
+ | |||
+ | === Фильтрация в списке === | ||
+ | [[https:// | ||
+ | <code python> | ||
+ | # В новый список добавляется элемент i, если подходит под if, его можно модифицировать в начале конструкции | ||
+ | res = [i for i in raw_list if re.search(f" | ||
+ | |||
+ | # | ||
+ | regexp = re.compile(f" | ||
+ | res2 = list(filter(regexp.fullmatch, | ||
+ | </ | ||
+ | |||
Строка 88: | Строка 101: | ||
=== Добавление/ | === Добавление/ | ||
+ | * **append()** - добавить элемент в конец | ||
+ | * **extend()** - добавить последовательность (список/ | ||
+ | * + конкатенация | ||
+ | * + += | ||
+ | * + присвоение срезу | ||
+ | * **insert()** - ставить элемент в указанную позицию | ||
+ | * **pop()** - удаляет последний либо указанный (по индексу) элемент | ||
+ | * **remove()** - удаляет первый по значению элемент | ||
+ | * **clear()** - очищает весь список | ||
+ | Для **удаления повторяющихся** значений можно преобразовать список во множество, | ||
- | <code python> | ||
- | </ | ||
- | <code python> | + | === Поиск |
- | </ | + | Проверка вхождения- **in** / **not in**\\ |
- | + | Получить индекс указанного элемента- **index()**, | |
- | + | Кол-во указанных значений- **count()**\\ | |
- | === Поиск в списке === | + | **max()**/ **min()**\\ |
- | + | **any()** | |
- | + | ||
- | <code python> | + | |
- | </code> | + | |
- | + | ||
- | <code python> | + | |
- | </code> | + | |
=== Переворачивание/ | === Переворачивание/ | ||
- | + | Метод **reverse()** переворачивает список, | |
- | + | Ф-я **shuffle()** - перемешивает случайным образом\\ | |
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
=== Выбор случайных элементов === | === Выбор случайных элементов === | ||
- | + | import random | |
- | + | **random.choice()** - возвращает случайный элемент из любой последовательности\\ | |
- | <code python> | + | **random.sample()** - вернет список из случайных элементов входного списка\\ |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
=== Сортировка === | === Сортировка === | ||
- | + | Метод **sort()** - можно указать собственную функцию для сортировки, есть аналогичная ф-я\\ | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | === Заполнение числами === | + | |
- | + | ||
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
=== Преобразование в строку === | === Преобразование в строку === | ||
- | + | Метод **join()**, **str()**\\ | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
==== Кортежи ==== | ==== Кортежи ==== | ||
- | **Не изменяемый тип данных**\\ | + | **Не изменяемый тип данных |
- | <code python> | + | Создать можно ф-ей **tuple()**, |
- | </ | + | В целом, поддерживают те же методы что и списки, |
- | + | ||
- | <code python> | + | |
- | </ | + | |
==== Множества ==== | ==== Множества ==== | ||
- | Набор **уникальных значений**. Может быть как изменяемым так и не изменяемым\\ | + | Набор **уникальных значений**. Может быть как изменяемым так и не изменяемым. **set()**\\ |
+ | Есть целый ряд методов для работы с парами множеств, | ||
- | <code python> | + | **frozenset()**- неизменяемое множество\\ |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
==== Диапазоны ==== | ==== Диапазоны ==== | ||
Содержит только последовательные значения, | Содержит только последовательные значения, | ||
+ | Поддерживается сравнение диапазонов (== !=) и методы **start()**/ | ||
<code python> | <code python> | ||
- | </code> | + | range(<Начало>=, < |
- | <code python> | + | range(1, 10) |
+ | range(10, 1, -1) | ||
+ | range(10, 110, 10) | ||
</ | </ | ||
+ | |||
==== Модуль itertools ==== | ==== Модуль itertools ==== | ||
+ | Ф-ции позволяющие генерировать различные последовательности, | ||
- | <code python> | + | === Генерирование неопределенного кол-ва значений === |
- | </code> | + | * **count(<start>=0, <step>=1)** - создает бесконечную последовательность. Удобно для подсчета\\ |
+ | * **cycle()** - на каждой итерации возвращает очередной элемент указанной последовательности, | ||
+ | * **repeat()** - возвращает объект указанное кол-во раз\\ | ||
<code python> | <code python> | ||
- | </code> | + | list(zip(itertools.count(), |
+ | >> [(0, a), (1, b), (2, c), (3, d), (4, e), (5, f)] | ||
+ | list(zip(itertools.cycle([0, | ||
+ | >> [(0, a), (1, b), (0, c), (1, d), (0, e), (1, f)] | ||
- | === Генерирование значений === | + | list(zip(itertools.repeate(5]), |
- | + | >> | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
</ | </ | ||
=== Генерирование комбинаций === | === Генерирование комбинаций === | ||
+ | * **combinations()** - на каждой итерации возвращает кортеж, | ||
+ | * **combinations_with_replacement()** - -||- ток элементы могут повторяться\\ | ||
+ | * **permutations()** - -||- если кол-во не указано, | ||
+ | * **product()** - -||- из одной или нескольких последовательностей\\ | ||
<code python> | <code python> | ||
- | </code> | + | list(itertools.combinations(' |
+ | >> [(' | ||
- | <code python> | + | list(itertools.combinations(' |
+ | >> [(' | ||
</ | </ | ||
=== Фильтрация последовательности === | === Фильтрация последовательности === | ||
- | + | Указывается пользовательская функция для проверки условия, | |
- | + | **filterfalse()**, | |
- | <code python> | + | |
- | </code> | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
=== Прочие функции === | === Прочие функции === | ||
- | + | Несколько функций для работы с последовательностями: | |
- | + | **islice()**, | |
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | + | ||
===== Словари ===== | ===== Словари ===== | ||
+ | Ассоциативные массивы, | ||
+ | Объекты произвольного типа, неограниченная вложенность, | ||
+ | Фильтрация словаря (аналогично списку, | ||
<code python> | <code python> | ||
+ | dict_match_graph = {name_graph: | ||
</ | </ | ||
- | |||
- | <code python> | ||
- | </ | ||
- | |||
==== Создание словаря ==== | ==== Создание словаря ==== | ||
- | + | * **dict()** | |
- | + | * **{}** | |
- | <code python> | + | * **dict.fromkeys()** |
- | </ | + | * **copy(), deepcopy()** |
- | + | ||
- | <code python> | + | |
- | </ | + | |
==== Операции над словарями ==== | ==== Операции над словарями ==== | ||
- | + | Обращение по ключу, если элемента нет то будет исключение **KeyError**, | |
- | + | Проверка на вхождение- **in, not in**\\ | |
- | <code python> | + | * **setdefault(<key>, <default>)** - если ключ отсутствует, |
- | </code> | + | * **len()**- кол-во ключей в словаре\\ |
- | + | * **del()**- удаляет элемент (del d[' | |
- | <code python> | + | |
- | </code> | + | |
==== Перебор элементов словаря ==== | ==== Перебор элементов словаря ==== | ||
- | + | Метод **keys()** возвращает объект с ключами, | |
- | + | **sort()**, **sorted()** - метод и функция для сортировки ключей | |
- | <code python> | + | |
- | </ | + | |
<code python> | <code python> | ||
+ | for key in sorted(d.keys()): | ||
+ | print(" | ||
</ | </ | ||
==== Методы ==== | ==== Методы ==== | ||
- | + | * **keys(), values(), items()**- возвращает объект содержащий соответствующую перечень данных | |
- | + | * **pop(), popitem(), clear()**- удаление | |
- | <code python> | + | * **update()**- добавляет элементы в словарь, |
- | </ | + | * **copy(), get(), setdefault(), |
- | + | ||
- | <code python> | + | |
- | </ | + | |
==== Генераторы словарей ==== | ==== Генераторы словарей ==== | ||
+ | В отличии от генераторов списков, | ||
<code python> | <code python> | ||
- | </code> | + | arrkeys= [' |
+ | arrvalues= [' | ||
+ | {k: v for (k, v) in zip(arrkeys, | ||
+ | >> {' | ||
- | <code python> | + | {k:0 for k in arrkeys} |
+ | {' | ||
</ | </ | ||
- | |||
- | |||
- | <code python> | ||
- | </ | ||
- | |||
- | |||
- | <code python> | ||
- | </ | ||
- | |||
- | <code python> | ||
- | </ |