У нас в средней школе с углублённым изучением английского языка были уроки по опросу/допросу англоязычных. Там, правда, больше про оружие и про состав подразделений. И даже методички были. (Сейчас даже не верится, что было такое в советской школе!)
То, что тут показано, больше походит на такой разговорник.
Дисклеймер. На пиакбу нет редактора кода поэтому картинки. Поскольку это шпаргалка с примерами то в этом посте допустимо.
Статья вышла большая, количество иллюстраций превышает предел, поэтому я разделил ее на две части.
В Python коллекция — это объект, содержащий группу элементов и позволяющий с ними работать как с единым целым.
Коллекции обычно поддерживают:
- итерацию ( `for item in collection` )
- проверку вхождения ( `x in collection` )
- определение длины ( `len(collection)` )
- доступ по индексу или ключу (если упорядочены или ассоциативны)
> 💡 В Python нет строгого интерфейса «коллекция», но есть неформальные протоколы. Если объект поддерживает `__iter__`, `__len__`, `__contains__` — его можно считать коллекцией.
---
Что не является коллекцией
Следующие типы не считаются коллекциями, так как не содержат группы элементов:
- `int`, `float`, `bool` — скалярные значения
- `None` — отсутствие значения
- функции, модули, классы — это объекты, но не контейнеры данных (если только не содержат `__dict__`)
---
Основные встроенные коллекции
Доступны без импортов:
Расширенные коллекции из стандартной библиотеки
Другие коллекции и коллекционоподобные типы
Хотя не всегда называются «коллекциями» в бытовом смысле, эти типы тоже хранят или представляют группы данных.
1. `str` — строка
Неизменяемая упорядоченная коллекция символов.
2. `bytes`, `bytearray`
3. `range`
Ленивая упорядоченная последовательность чисел. Не хранит элементы в памяти.
4. `array.array`
Хранит однотипные числовые данные компактно (как в C).
5. Генераторы и итераторы
Не хранят данные — генерируют по запросу. Не поддерживают `len()` или индексацию.
6. `ChainMap` (из `collections`)
Объединяет несколько словарей в одну виртуальную коллекцию — поиск идёт по цепочке.
7. `OrderedDict` (из `collections`)
Словарь с гарантированным порядком вставки. Актуален для Python < 3.7.
8. `enum.Enum`, `enum.Flag`
Коллекции именованных констант.
9. `typing.NamedTuple`, `typing.TypedDict`
Типизированные обёртки над `namedtuple` и `dict`.
10. `heapq`, `bisect` — инструменты, а не коллекции
Работают с коллекциями, но сами коллекциями не являются:
- `heapq` — поддержка кучи через списки. - `bisect` — вставка в отсортированный список с сохранением порядка.
---
1. Списки — `list`
Упорядоченная, изменяемая коллекция. Элементы могут повторяться, типы — любые.
Применяется, когда нужна гибкая последовательность: добавление, удаление, изменение элементов.
Создание: `[]`
2. Словари — `dict`
Коллекция пар **ключ → значение**. Ключи должны быть хешируемыми. С Python 3.7 сохраняет порядок вставки.
Полезен для структурированных данных: профили, конфиги, JSON.
Создание: `{}`
3. Кортежи — `tuple`
Упорядоченная, неизменяемая коллекция. Подходит для фиксированных данных.
Используется, когда важна неизменяемость: координаты, параметры, возвращаемые значения.
Создание: `()`
> 💡 Кортежи занимают меньше памяти и работают быстрее списков. Идеальны, когда изменяемость не нужна.
«Почему у лошадей табун, у коров – стадо, а у птиц стая? Почему по-разному называется у всех?» – вопрос нашей юной читательницы.
Давайте попробуем разгадать эту загадку. Вот дикие животные: «волк» (отец), «волчица» (мать), «волчонок» (детёныш). То же самое: «тигр», «тигрица», «тигрёнок». «Слон», «слониха», «слонёнок». «Буйвол», «буйволица», «буйволёнок»... Все слова однокоренные, образованы от одного корня!
А теперь переключимся на домашних животных. Смотрите-ка, совсем другая картина! Самец коровы – вовсе не «коров», а «бык». И корову никто не назовёт «бычихой». А их детёныш – телёнок, это уже третье слово. У лошадей – «конь», «кобыла», «жеребёнок». У овец – «баран», «овца», «ягнёнок». У свиней – «боров», «свинья», «поросёнок». У кур – «петух», «курица», «цыплёнок». У северных оленей (это тоже домашние животные) есть «олень» (папа), «важенка» (мама) и «пыжик» (детёныш)...
– Чижик-пыжик!..
Да-да! «Пыжик» – это вовсе не птичка, как думают некоторые. Это маленький (не старше шести месяцев) детёныш северного оленя.
Чижик и пыжик
А когда пыжик становится подростком, его называют не очень благозвучным словом «неблюй». В общем, каждый «член оленьей семьи» называется у оленеводов отдельным, «специальным» словом... Ну как, начинаете догадываться?
Ну вот смотрите: в каждом языке бывают слова максимально точные, обозначающие только это явление, и никакое другое, и бывают слова «обобщающие», обозначающие группу похожих явлений. Например, есть обобщающее слово «еда». Есть более специализированное слово «сыр». А есть совсем «точное» слово, обозначающее конкретный сорт сыра, – например, «брынза». Есть обобщающее слово «инструмент». Есть более специализированное, но тоже общее – «отвёртка». А есть слова, обозначающие конкретные разновидности отвёрток, – скажем, «шлиц» или «шестигранник».
Когда люди изобретают и используют отдельное, «специализированное» слово?
– Когда боятся ошибиться?
Правильно. А когда люди боятся ошибиться? Когда говорят о том, что для них важно! Когда это слово обозначает что-то особенно важное для говорящего! Наши предки были земледельцами и скотоводами, для них домашние животные и птицы были самым настоящим богатством. Поэтому самцы, самки и детёныши разного возраста, а также их группы назывались отдельными словами.
Можно, конечно, сказать «стадо лошадей». Но короче и точнее сказать «табун». Кстати, слово «табун» пришло в русский из татарского языка, а по-татарски оно означает... всё то же самое «стадо»! «Специализированное» слово в данном случае заимствуется из другого языка, так тоже бывает.
Иногда такие «узкоспециальные» слова при переходе от одного языка к другому создают довольно комические ситуации. Вот, скажем, мы уже упоминали сыр. У нас в России многие любят сладкие творожки с шоколадной глазурью. Или творог со сметаной. Или творог с вареньем. Но если мы попробуем рассказать англичанину про «сладкий творог» или «творог с вареньем», то столкнёмся с проблемой: в английском языке нет слова, обозначающего творог! Есть словосочетание «cottage cheese», то есть «деревенский сыр». Для британца наш «творог» – это один из сортов мягкого сыра. А для русских сыр и творог – совершенно разные продукты.
Та же самая картина с любимым многими квасом: в английском языке нет понятия «квас». Поэтому русское слово «квас» англичане обычно объясняют примерно как «русский народный сорт пива». Окрошка для них – «холодный суп с пивом».
– Тогда лучше с кефиром!
– Слова «кефир» у них тоже нет…
Узкоспециальные слова с конкретным значением делают язык точнее и богаче. Жил такой выдающийся философ – Людвиг Витгенштейн, так вот он вообще считал, что идеальным языком был бы такой, в котором для каждого предмета, каждого действия, каждого чувства существовало бы отдельное слово! Чтобы люди всегда понимали друг друга правильно…
Людвиг Витгенштейн (1889–1951) считал, что язык должен быть точным. Лучшим из языков он считал язык математических формул.
Теперь понимаете, почему для обозначения группы лошадей, коров, а уж тем более птиц используются разные слова?
Вы случайно не смотрели когда-нибудь смешную комедию «Сватовство гусара»? Она снята по мотивам пьесы Николая Алексеевича Некрасова (того самого, который «Однажды в студёную зимнюю пору...») «Петербургский ростовщик». В этой комедии бравый гусар Налимов, переодетый в грузинского князя, пытается уговорить жадину-ростовщика продать ему нарисованную овечку с картины: «Продай барашка! Смотри, у тебя их тут раз, два, три... целый... целый... эскадрон!».
Его товарищ, в ужасе от того, что сейчас обман вскроется, шепчет: «Какой эскадрон?! Отара, отара!». Гусар Налимов слова «отара» то ли не знал, то ли забыл, зато вставил привычное ему, конному воину, слово «эскадрон».
Кстати, «эскадрон» – это отряд воинов-конников, «эскадра» – это боевые корабли, а «эскадрилья» может быть только в авиации!
Это была статья из сентябрьского номера. Приобрести его можно на Wildberries и в «Озоне».
Инвесторы разговаривают так, будто шифруются: то ждут дядю Колю, то лосей ловят. Собрали маленький словарь инвесторского сленга. Коротко, смешно и с картинками.