<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Python Jungle</title><generator>teletype.in</generator><description><![CDATA[Python Jungle]]></description><image><url>https://img4.teletype.in/files/f4/51/f4515d01-faa7-41d3-bd8d-944bacb45c91.png</url><title>Python Jungle</title><link>https://teletype.in/@python_jungle</link></image><link>https://teletype.in/@python_jungle?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/python_jungle?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/python_jungle?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sat, 04 Apr 2026 05:36:14 GMT</pubDate><lastBuildDate>Sat, 04 Apr 2026 05:36:14 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@python_jungle/3z5bwWOprIN</guid><link>https://teletype.in/@python_jungle/3z5bwWOprIN?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle</link><comments>https://teletype.in/@python_jungle/3z5bwWOprIN?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle#comments</comments><dc:creator>python_jungle</dc:creator><title>Словари в Python</title><pubDate>Fri, 06 Sep 2024 12:29:57 GMT</pubDate><category>python</category><description><![CDATA[<img src="https://img3.teletype.in/files/e2/e3/e2e325ec-59a7-487e-81bb-54c8ee4c382e.jpeg"></img>Словари (dict) в Python — это неупорядоченная коллекция, которая хранит данные в парах ключ-значение. Создавая словарь, мы передаем последовательность элементов внутрь фигурных скобок {}, разделяя их запятыми (,). Каждый элемент имеет ключ и значение, выраженное парой «ключ: значение».]]></description><content:encoded><![CDATA[
  <p id="g3qv">Словари (<code>dict</code>) в Python — это неупорядоченная коллекция, которая хранит данные в парах ключ-значение. Создавая словарь, мы передаем последовательность элементов внутрь фигурных скобок <code>{}</code>, разделяя их запятыми (<code>,</code>). Каждый элемент имеет ключ и значение, выраженное парой «ключ: значение».</p>
  <p id="hEYa">Наглядно синтаксис словарей выглядит следующим образом:</p>
  <pre id="tQW1" data-lang="python">items_dict = {&quot;vehicle&quot;: &quot;Tesla&quot;, &quot;fruit&quot;: &quot;apple&quot;, &quot;lucky_number&quot;: 7}</pre>
  <p id="ybeN">Вот ещё один пример словаря, где ключами являются числа, а значениями — строки:</p>
  <pre id="AU3B" data-lang="python">gender_dict = {0: &#x27;woman&#x27;,
               1: &#x27;man&#x27;}</pre>
  <p id="napp">Как видно из примеров, для создания словаря можно перечислить в фигурных скобках пары: ключ и значение. Ключ и значение отделяются двоеточием и пробелами, а пары перечисляются через запятую.</p>
  <p id="rymZ">Другой способ создать словарь - это использовать функцию <code>dict()</code>.</p>
  <pre id="DoBF" data-lang="python">empty_dict = dict()</pre>
  <p id="2yRc">Функция <code>dict()</code> создаст словарь, инициализированный из необязательного позиционного аргумента и возможно пустого набора ключевых аргументов.</p>
  <h3 id="iCRG">Параметры:</h3>
  <ul id="uXgA">
    <li id="H9ks"><code>kwarg</code> - ключевые аргументы <code>one=1, two=2, three=3</code></li>
    <li id="cmdJ"><code>iterable</code> - итерируемый объект, например список следующего вида <code>[(&#x27;one&#x27;, 1), (&#x27;two&#x27;, 2), (&#x27;three&#x27;, 3)]</code></li>
    <li id="7ztl"><code>mapping</code> - словарь, например <code>{&#x27;three&#x27;: 3, &#x27;two&#x27;: 2, &#x27;one&#x27;: 1}</code></li>
  </ul>
  <p id="weha">Если позиционный аргумент не задан, создается пустой словарь, как в примере выше.</p>
  <p id="V5xN">Примеры использования функции dict:</p>
  <pre id="0Olq" data-lang="python"># создание словаря с помощью ключевых аргументов
dict_sample = dict(one=1, two=2, three=3)
print(dict_sample) # {&#x27;one&#x27;: 1, &#x27;two&#x27;: 2, &#x27;three&#x27;: 3}

# создание словаря с помощью другого словаря
dict_sample = dict({0: &#x27;orange&#x27;, 1: &#x27;pawpaw&#x27;})
print(dict_sample) # {0: &#x27;orange&#x27;, 1: &#x27;pawpaw&#x27;}

# создание словаря с помощью последовательности
dict_sample = dict([(0,&#x27;apple&#x27;), (1,&#x27;pawpaw&#x27;)])
print(dict_sample) # {0: &#x27;apple&#x27;, 1: &#x27;pawpaw&#x27;}
</pre>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <blockquote id="ITML"><strong>Личная рекомендация:</strong> Для большинства случаев следует использовать фигурные скобки <code>{}</code> для создания пустого словаря из-за их более высокой производительности и лучшей читаемости кода. Использование функции <code>dict()</code> может быть оправдано в специфических случаях, например, при создании словаря с определёнными параметрами или в контексте более сложных выражений.</blockquote>
  </section>
  <p id="AdbU">Важно отметить некоторые особенности словарей:</p>
  <ol id="gvzl">
    <li id="8Atu">Ключом в словаре может быть только неизменяемый тип данных (например, строка, число или кортеж).</li>
    <li id="PSRx">Значением может быть любой тип данных, включая другие словари или списки.</li>
  </ol>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <blockquote id="BdUK">В первом пункте, есть небольшая неточность. Дело в том, что ключи в словарях должны быть <strong>хешируемыми</strong>. Это означает, что они должны иметь неизменяемое хэш-значение, что гарантирует их уникальность и неизменность в контексте словаря. Однако подобные тонкости будут рассмотрены более подробно в другой статье.</blockquote>
  </section>
  <p id="rOAZ">В отличие от списков, где для получения элементов необходимо обращаться к ним по числовому индексу, в словарях мы обращаемся к элементам по ключу. Это дает больше гибкости и удобства при работе с данными.</p>
  <p id="HTum">Для получения значения в словаре, необходимо указать ключ в квадратных скобках после имени словаря:</p>
  <pre id="0Ykx" data-lang="python">items_dict = {&quot;vehicle&quot;: &quot;Tesla&quot;, &quot;fruit&quot;: &quot;apple&quot;, &quot;lucky_number&quot;: 7}
print(items_dict[&quot;vehicle&quot;])</pre>
  <p id="qBZy">Выведет:</p>
  <pre id="lN6n" data-lang="bash">Tesla</pre>
  <p id="Yop4">При попытке получить значение по несуществующему ключу вызывается исключение <code>KeyError</code></p>
  <pre id="gKzK" data-lang="python">items_dict = {&quot;vehicle&quot;: &quot;Tesla&quot;, &quot;fruit&quot;: &quot;apple&quot;, &quot;lucky_number&quot;: 7}

print(items_dict[&quot;test&quot;])</pre>
  <p id="HCuD">В качестве результата получим следующее сообщение:</p>
  <pre id="aXCk" data-lang="bash">print(items_dict[&quot;test&quot;])
      ~~~~~~~~~~^^^^^^
KeyError: &#x27;test&#x27;</pre>
  <h2 id="qii1" data-align="center">Как получить элементы списка без ошибок?</h2>
  <p id="qGrn"><strong>Первый способ</strong> избежать подобной ошибки. Это использовать уже известный нам оператора <code>in</code>.</p>
  <p id="5p6h">При помощи него мы можем проверить, существует ли ключ в словаре:</p>
  <pre id="km5A" data-lang="python">items_dict = {&quot;vehicle&quot;: &quot;Tesla&quot;, &quot;fruit&quot;: &quot;apple&quot;, &quot;lucky_number&quot;: 7}

print(&quot;vehicle&quot; in items_dict)
print(&quot;qwerty&quot; in items_dict)
print(&quot;123&quot; in items_dict)</pre>
  <p id="pLOf">Выведет:</p>
  <pre id="34uV">True
False
False</pre>
  <p id="sCub"><strong>Второй способ.</strong> Использование специального метода <code>get(key[, default])</code></p>
  <p id="1Ktr">Этот метод возвращает значение для ключа, если ключ находится в словаре, иначе возвращает значение по умолчанию <code>default</code>. Если значение по умолчанию не задано, метод возвращает <code>None</code> (но никогда не возвращает исключение).</p>
  <h2 id="XJ5k" data-align="center">Добавление и изменение содержимого словаря</h2>
  <p id="rQCU">Добавление новых пар в словарь происходит достаточно просто:</p>
  <pre id="2exg" data-lang="python">temp_dict = {}
temp_dict[&quot;key&quot;] = &quot;value&quot;
print(temp_dict)</pre>
  <p id="1D6C">в результате получим:</p>
  <pre id="c6vC">{&quot;key&quot;: &quot;value&quot;}</pre>
  <p id="tXDa">Изменение выполняется абсолютно также:</p>
  <pre id="sl88" data-lang="python">temp_dict = {&quot;key&quot;: &quot;value&quot;} 
temp_dict[&quot;key&quot;] = &quot;new_value&quot; 
print(temp_dict[&quot;key&quot;])</pre>
  <p id="MqlM">Вывод программы:</p>
  <pre id="KpR3">new_value</pre>
  <section style="background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="aA7Y">Обратите внимание, при записи значения по уже существующему ключу он создаётся заново с новым значением, а прошлый стирается</p>
  </section>
  <p id="fEjW">Для добавления/изменения сразу нескольких объектов в словаре, используется специальный метод <code>update([other])</code>. Он обновляет словарь парами ключ-значение из <code>other,</code> перезаписывая существующие ключи.</p>
  <p id="O0BK">В дальнейших примерах мы будем использовать следующий словарь, содержащий в себе информацию о студентах:</p>
  <pre id="GPR0" data-lang="python">students = {
    &#x27;Alice&#x27;: {&#x27;age&#x27;: 22, &#x27;major&#x27;: &#x27;Computer Science&#x27;},
    &#x27;Bob&#x27;: {&#x27;age&#x27;: 21, &#x27;major&#x27;: &#x27;Mathematics&#x27;}
}</pre>
  <h4 id="DcXz" data-align="center">Пример 1: Добавление нового студента</h4>
  <pre id="CObv" data-lang="python">new_student = {&#x27;Charlie&#x27;: {&#x27;age&#x27;: 23, &#x27;major&#x27;: &#x27;Physics&#x27;}}
students.update(new_student)

print(students)</pre>
  <p id="O8SH">Получим:</p>
  <pre id="Z6Uk" data-lang="bash">{&#x27;Alice&#x27;: {&#x27;age&#x27;: 22, &#x27;major&#x27;: &#x27;Computer Science&#x27;}, &#x27;Bob&#x27;: {&#x27;age&#x27;: 21, &#x27;major&#x27;: &#x27;Mathematics&#x27;}, &#x27;Charlie&#x27;: {&#x27;age&#x27;: 23, &#x27;major&#x27;: &#x27;Physics&#x27;}}</pre>
  <h4 id="VNfE" data-align="center">Пример 2: Обновление информации о существующем студенте</h4>
  <pre id="kOeO" data-lang="python">update_info = {&#x27;Bob&#x27;: {&#x27;age&#x27;: 22, &#x27;major&#x27;: &#x27;Data Science&#x27;}}
students.update(update_info)

print(students)</pre>
  <p id="QFla">Получим:</p>
  <pre id="qABl" data-lang="bash">{&#x27;Alice&#x27;: {&#x27;age&#x27;: 22, &#x27;major&#x27;: &#x27;Computer Science&#x27;}, &#x27;Bob&#x27;: {&#x27;age&#x27;: 22, &#x27;major&#x27;: &#x27;Data Science&#x27;}, &#x27;Charlie&#x27;: {&#x27;age&#x27;: 23, &#x27;major&#x27;: &#x27;Physics&#x27;}}</pre>
  <h4 id="2qBS" data-align="center">Пример 3: Добавление нового студента и обновление информации о другом с помощью ключевых аргументов</h4>
  <pre id="xDpV" data-lang="python">students.update({&#x27;David&#x27;: {&#x27;age&#x27;: 24, &#x27;major&#x27;: &#x27;Biology&#x27;}}, Alice={&#x27;age&#x27;: 23, &#x27;major&#x27;: &#x27;Artificial Intelligence&#x27;})

print(students)</pre>
  <p id="FcjK">Получим:</p>
  <pre id="GG8M" data-lang="bash">{&#x27;Alice&#x27;: {&#x27;age&#x27;: 23, &#x27;major&#x27;: &#x27;Artificial Intelligence&#x27;}, &#x27;Bob&#x27;: {&#x27;age&#x27;: 22, &#x27;major&#x27;: &#x27;Data Science&#x27;}, &#x27;Charlie&#x27;: {&#x27;age&#x27;: 23, &#x27;major&#x27;: &#x27;Physics&#x27;}, &#x27;David&#x27;: {&#x27;age&#x27;: 24, &#x27;major&#x27;: &#x27;Biology&#x27;}}</pre>
  <h4 id="sCeQ" data-align="center">Пример 4: Обновление словаря с помощью итерируемого объекта</h4>
  <pre id="CTZi" data-lang="python">students.update([(&#x27;Eve&#x27;, {&#x27;age&#x27;: 25, &#x27;major&#x27;: &#x27;Chemistry&#x27;}), (&#x27;Charlie&#x27;, {&#x27;age&#x27;: 24, &#x27;major&#x27;: &#x27;Quantum Physics&#x27;})])

print(students)</pre>
  <p id="mgfS">Получим:</p>
  <pre id="gLj3" data-lang="bash">{&#x27;Alice&#x27;: {&#x27;age&#x27;: 23, &#x27;major&#x27;: &#x27;Artificial Intelligence&#x27;}, &#x27;Bob&#x27;: {&#x27;age&#x27;: 22, &#x27;major&#x27;: &#x27;Data Science&#x27;}, &#x27;Charlie&#x27;: {&#x27;age&#x27;: 24, &#x27;major&#x27;: &#x27;Quantum Physics&#x27;}, &#x27;David&#x27;: {&#x27;age&#x27;: 24, &#x27;major&#x27;: &#x27;Biology&#x27;}, &#x27;Eve&#x27;: {&#x27;age&#x27;: 25, &#x27;major&#x27;: &#x27;Chemistry&#x27;}}</pre>
  <h4 id="I8PL" data-align="center">Пример 5: Обновление словаря с помощью другого словаря, содержащего вложенные словари</h4>
  <pre id="kPb1" data-lang="python">new_data = {
    &#x27;Alice&#x27;: {&#x27;age&#x27;: 24, &#x27;major&#x27;: &#x27;Machine Learning&#x27;},
    &#x27;Frank&#x27;: {&#x27;age&#x27;: 26, &#x27;major&#x27;: &#x27;Economics&#x27;}
}
students.update(new_data)

print(students)</pre>
  <p id="rnh8">Результат:</p>
  <pre id="dU15" data-lang="bash">{&#x27;Alice&#x27;: {&#x27;age&#x27;: 24, &#x27;major&#x27;: &#x27;Machine Learning&#x27;}, &#x27;Bob&#x27;: {&#x27;age&#x27;: 22, &#x27;major&#x27;: &#x27;Data Science&#x27;}, &#x27;Charlie&#x27;: {&#x27;age&#x27;: 24, &#x27;major&#x27;: &#x27;Quantum Physics&#x27;}, &#x27;David&#x27;: {&#x27;age&#x27;: 24, &#x27;major&#x27;: &#x27;Biology&#x27;}, &#x27;Eve&#x27;: {&#x27;age&#x27;: 25, &#x27;major&#x27;: &#x27;Chemistry&#x27;}, &#x27;Frank&#x27;: {&#x27;age&#x27;: 26, &#x27;major&#x27;: &#x27;Economics&#x27;}}</pre>
  <h2 id="PZjX" data-align="center">Удаление элементов из словаря</h2>
  <p id="fMuM">Для удаления элемента из словаря можно использовать либо оператор <code>del dict[key]</code>, либо метод <code>dict.pop(key[, default])</code>. В первом случае из словаря удаляется соответствующая пара. Или, если такого ключа нет, возвращается <code>KeyError</code>.</p>
  <p id="P4V1"><strong>Пример 1: Использование </strong><code>del</code> для удаления элемента</p>
  <pre id="9aHJ" data-lang="python">temp_dict = {&quot;key&quot;: &quot;value&quot;}

# Удаляем элемент с ключом &quot;key&quot;
del temp_dict[&quot;key&quot;]
print(f&quot;temp_dict = {temp_dict}&quot;)

# Удаляем элемент с несуществующим ключом
del temp_dict[&quot;python&quot;]</pre>
  <p id="eGsN"><strong>Результат:</strong></p>
  <pre id="51x3" data-lang="bash">temp_dict = {}
Traceback (most recent call last): 
  File &quot;&quot;, line 1, in 
KeyError: &#x27;python&#x27;</pre>
  <p id="b5MN">Метод <code>dict.pop(key[, default])</code> удаляет из словаря элемент с заданным ключом и возвращает его значение. Если ключ отсутствует, метод возвращает значение <code>default</code> . Если значение <code>default</code> не задано и ключа не существует, метод <code>pop()</code> вызовет исключение <code>KeyError</code>.</p>
  <p id="oPmv"><strong>Пример 2: Использование </strong><code>dict.pop(key[, default])</code> для удаления элемента</p>
  <pre id="CoYy" data-lang="python">temp_dict = {&quot;key&quot;: &quot;value&quot;}

deleted_value = temp_dict.pop(&quot;key&quot;)

print(f&quot;Удаленное значение: {deleted_value}&quot;)
print(f&quot;temp_dict = {temp_dict}\n&quot;)

deleted_value = temp_dict.pop(&quot;non_existent_key&quot;, &quot;default_value&quot;)

print(f&quot;Возвращенное значение: {deleted_value}&quot;)
print(f&quot;temp_dict = {temp_dict}&quot;)</pre>
  <p id="BoTC"><strong>Результат:</strong></p>
  <pre id="Imkq" data-lang="bash">Удаленное значение: value
temp_dict = {}

Возвращенное значение: default_value
temp_dict = {&#x27;key&#x27;: &#x27;value&#x27;}</pre>
  <p id="h1xk"><strong>Пример 3: Использование </strong><code>dict.pop(key[, default])</code> с отсутствующим ключом без значения по умолчанию</p>
  <pre id="uU27" data-lang="python">temp_dict = {&quot;key&quot;: &quot;value&quot;}

value = temp_dict.pop(&quot;non_existent_key&quot;)

print(f&quot;temp_dict = {temp_dict}&quot;)</pre>
  <p id="91Po"><strong>Результат:</strong></p>
  <pre id="T962" data-lang="bash">Traceback (most recent call last):
  File &quot;&quot;, line 4, in &lt;module&gt;
    value = temp_dict.pop(&quot;non_existent_key&quot;)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: &#x27;non_existent_key&#x27;</pre>
  <h2 id="Lr37" data-align="center">Методы словарей</h2>
  <p id="eIBT">Словари в Python имеют множество различных полезных методов, которые помогут вам в работе с ними. C некоторыми из них вы уже успели познакомиться. Всё повторим и разберемся с неизученными :).</p>
  <h3 id="gBAO">1. copy()</h3>
  <p id="fQE7"><strong>Сигнатура:</strong></p>
  <pre id="ApFY" data-lang="python">dict.copy()</pre>
  <p id="kM2Z"><strong>Описание:</strong><br /> Этот метод возвращает поверхностную копию словаря. Мы должны быть осторожны с такими копиями: если словарь содержит списки, кортежи или множества, то в созданной копии будут только ссылки на объекты из оригинала.</p>
  <p id="olqV"><strong>Пример:</strong></p>
  <pre id="hZdh" data-lang="python">dict1 = {&#x27;car&#x27;: &#x27;машина&#x27;, &#x27;apple&#x27;: &#x27;яблоко&#x27;, &#x27;orange&#x27;: &#x27;апельсин&#x27;}
dict2 = dict1.copy()
print(dict2)  # Выведет {&#x27;car&#x27;: &#x27;машина&#x27;, &#x27;apple&#x27;: &#x27;яблоко&#x27;, &#x27;orange&#x27;: &#x27;апельсин&#x27;}</pre>
  <p id="4nI2">При использовании метода <code>copy()</code> для создания копии словаря, если словарь содержит списки, кортежи, множества или другие словари, то в созданной копии будут только ссылки на объекты из оригинала. Это означает, что изменения во вложенных объектах в копии будут отражаться и в оригинале.</p>
  <p id="islt"><strong>Пример:</strong></p>
  <pre id="GOsx" data-lang="python">import copy

# Исходный словарь с вложенными списками
original_dict = {
    &#x27;a&#x27;: [1, 2, 3],
    &#x27;b&#x27;: (4, 5, 6),
    &#x27;c&#x27;: {7, 8, 9}
}

# Создаем поверхностную копию
shallow_copy = original_dict.copy()

# Изменяем вложенный список в поверхностной копии
shallow_copy[&#x27;a&#x27;].append(4)

# Выводим оригинальный словарь и поверхностную копию
print(&quot;Оригинальный словарь:&quot;, original_dict)
print(&quot;Поверхностная копия:&quot;, shallow_copy)</pre>
  <p id="E6jG"><strong>Результат:</strong></p>
  <pre id="nZJA" data-lang="python">Оригинальный словарь: {&#x27;a&#x27;: [1, 2, 3, 4], &#x27;b&#x27;: (4, 5, 6), &#x27;c&#x27;: {8, 9, 7}}
Поверхностная копия: {&#x27;a&#x27;: [1, 2, 3, 4], &#x27;b&#x27;: (4, 5, 6), &#x27;c&#x27;: {8, 9, 7}}</pre>
  <p id="rJiW">Как видно из результата, <strong>изменения во вложенном списке в поверхностной копии отразились и в оригинале</strong>.</p>
  <p id="hZIM">Чтобы избежать этой проблемы, можно создать глубокую копию словаря, используя функцию <code>copy.deepcopy(x)</code>. Глубокая копия создает независимую копию всех вложенных объектов.</p>
  <p id="3ZLQ"><strong>Пример:</strong></p>
  <pre id="KU1J" data-lang="python">import copy

# Исходный словарь с вложенными списками
original_dict = {
    &#x27;a&#x27;: [1, 2, 3],
    &#x27;b&#x27;: (4, 5, 6),
    &#x27;c&#x27;: {7, 8, 9}
}

# Создаем глубокую копию
deep_copy = copy.deepcopy(original_dict)

# Изменяем вложенный список в глубокой копии
deep_copy[&#x27;a&#x27;].append(4)

# Выводим оригинальный словарь и глубокую копию
print(&quot;Оригинальный словарь:&quot;, original_dict)
print(&quot;Глубокая копия:&quot;, deep_copy)</pre>
  <p id="PW8g"><strong>Результат:</strong></p>
  <pre id="hMkS" data-lang="python">Оригинальный словарь: {&#x27;a&#x27;: [1, 2, 3], &#x27;b&#x27;: (4, 5, 6), &#x27;c&#x27;: {8, 9, 7}}
Глубокая копия: {&#x27;a&#x27;: [1, 2, 3, 4], &#x27;b&#x27;: (4, 5, 6), &#x27;c&#x27;: {8, 9, 7}}</pre>
  <p id="t148">Теперь изменения во вложенном списке в глубокой копии не отражаются в оригинале, так как глубокая копия создает независимую копию всех вложенных объектов.</p>
  <h4 id="tYDJ">Пояснения:</h4>
  <ul id="MlG2">
    <li id="56wv"><strong>Поверхностная копия</strong>: Создает копию словаря, но вложенные объекты (списки, кортежи, множества) остаются ссылками на оригинальные объекты.</li>
    <li id="uORF"><strong>Глубокая копия</strong>: Создает полностью независимую копию словаря, включая все вложенные объекты.</li>
  </ul>
  <p id="9Pyv">Использование глубокой копии позволяет избежать нежелательных побочных эффектов при работе с вложенными структурами данных.</p>
  <h3 id="clwr">2. get(key[, default])</h3>
  <p id="oVWS"><strong>Синтаксис:</strong></p>
  <pre id="UmiO" data-lang="python">dict.get(key[, default])</pre>
  <p id="A285"><strong>Описание:</strong><br /> Возвращает значение по указанному ключу. Если ключ отсутствует, возвращает значение <code>default</code> (по умолчанию <code>None</code>).</p>
  <p id="A25o"><strong>Пример:</strong></p>
  <pre id="iM6C" data-lang="python">dict1 = {&#x27;car&#x27;: &#x27;машина&#x27;, &#x27;apple&#x27;: &#x27;яблоко&#x27;, &#x27;orange&#x27;: &#x27;апельсин&#x27;}
print(dict1.get(&#x27;car&#x27;))  # Выведет &#x27;машина&#x27;
print(dict1.get(&#x27;home&#x27;, &#x27;дом&#x27;))  # Выведет &#x27;дом&#x27;, так как ключ &#x27;home&#x27; отсутствует</pre>
  <h3 id="uiID">3. clear()</h3>
  <p id="VCyk"><strong>Синтаксис:</strong></p>
  <pre id="pfmF" data-lang="python">dict.clear()</pre>
  <p id="LTtV"><strong>Описание:</strong><br /> Удаляет все элементы из словаря.</p>
  <p id="Yjvx"><strong>Пример:</strong></p>
  <pre id="Mmuz" data-lang="python">dict1 = {&#x27;car&#x27;: &#x27;машина&#x27;, &#x27;apple&#x27;: &#x27;яблоко&#x27;, &#x27;orange&#x27;: &#x27;апельсин&#x27;}
dict1.clear()
print(dict1)  # Выведет {}</pre>
  <h3 id="IVyV">4. keys()</h3>
  <p id="FO7j"><strong>Синтаксис:</strong></p>
  <pre id="qvLS" data-lang="python">dict.keys()</pre>
  <p id="GMvZ"><strong>Описание:</strong><br /> Возвращает объект представления, содержащий все ключи словаря.</p>
  <p id="Lfvd"><strong>Пример:</strong></p>
  <pre id="9RVe" data-lang="python">dict1 = {&#x27;car&#x27;: &#x27;машина&#x27;, &#x27;apple&#x27;: &#x27;яблоко&#x27;, &#x27;orange&#x27;: &#x27;апельсин&#x27;}
print(dict1.keys())  # Выведет dict_keys([&#x27;car&#x27;, &#x27;apple&#x27;, &#x27;orange&#x27;])</pre>
  <h3 id="YUnV">5. values()</h3>
  <p id="zXBc"><strong>Синтаксис:</strong></p>
  <pre id="CBZo" data-lang="python">dict.values()</pre>
  <p id="mYoI"><strong>Описание:</strong><br /> Возвращает объект представления, содержащий все значения словаря.</p>
  <p id="p2ic"><strong>Пример:</strong></p>
  <pre id="I7l6" data-lang="python">dict1 = {&#x27;car&#x27;: &#x27;машина&#x27;, &#x27;apple&#x27;: &#x27;яблоко&#x27;, &#x27;orange&#x27;: &#x27;апельсин&#x27;}
print(dict1.values())  # Выведет dict_values([&#x27;машина&#x27;, &#x27;яблоко&#x27;, &#x27;апельсин&#x27;])</pre>
  <h3 id="Xs8P">6. items()</h3>
  <p id="Kwyb"><strong>Синтаксис:</strong></p>
  <pre id="lUAI" data-lang="python">dict.items()</pre>
  <p id="etNK"><strong>Описание:</strong><br /> Возвращает объект представления, содержащий пары ключ-значение в виде кортежей.</p>
  <p id="vIE7"><strong>Пример:</strong></p>
  <pre id="GvfE" data-lang="python">dict1 = {&#x27;car&#x27;: &#x27;машина&#x27;, &#x27;apple&#x27;: &#x27;яблоко&#x27;, &#x27;orange&#x27;: &#x27;апельсин&#x27;}
print(dict1.items())  # Выведет dict_items([(&#x27;car&#x27;, &#x27;машина&#x27;), (&#x27;apple&#x27;, &#x27;яблоко&#x27;), (&#x27;orange&#x27;, &#x27;апельсин&#x27;)])</pre>
  <h3 id="6t5J">7. pop(key[, default])</h3>
  <p id="mhGg"><strong>Синтаксис:</strong></p>
  <pre id="HLa1" data-lang="python">dict.pop(key[, default])</pre>
  <p id="kB2A"><strong>Описание:</strong><br /> Удаляет элемент с указанным ключом и возвращает его значение. Если ключ отсутствует, возвращает значение <code>default</code> (если оно указано) или вызывает исключение <code>KeyError</code>.</p>
  <p id="513a"><strong>Пример:</strong></p>
  <pre id="iPIM" data-lang="python">dict1 = {&#x27;car&#x27;: &#x27;машина&#x27;, &#x27;apple&#x27;: &#x27;яблоко&#x27;, &#x27;orange&#x27;: &#x27;апельсин&#x27;}
print(dict1.pop(&#x27;car&#x27;))  # Выведет &#x27;машина&#x27;
print(dict1.pop(&#x27;home&#x27;, &#x27;дом&#x27;))  # Выведет &#x27;дом&#x27;, так как ключ &#x27;home&#x27; отсутствует
print(dict1)  # Выведет {&#x27;apple&#x27;: &#x27;яблоко&#x27;, &#x27;orange&#x27;: &#x27;апельсин&#x27;}</pre>
  <h3 id="6Ljb">8. popitem()</h3>
  <p id="7g2W"><strong>Синтаксис:</strong></p>
  <pre id="I5Aj" data-lang="python">dict.popitem()</pre>
  <p id="EkeM"><strong>Описание:</strong><br /> Удаляет и возвращает последнюю добавленную пару ключ-значение в виде кортежа. Если словарь пуст, метод вызывает исключение <code>KeyError</code>.</p>
  <p id="Znls"><strong>Пример:</strong></p>
  <pre id="r9Ah" data-lang="python">dict1 = {&#x27;car&#x27;: &#x27;машина&#x27;, &#x27;apple&#x27;: &#x27;яблоко&#x27;, &#x27;orange&#x27;: &#x27;апельсин&#x27;}
print(dict1.popitem())  # Выведет (&#x27;orange&#x27;, &#x27;апельсин&#x27;)
print(dict1)  # Выведет {&#x27;car&#x27;: &#x27;машина&#x27;, &#x27;apple&#x27;: &#x27;яблоко&#x27;}</pre>
  <h3 id="T5A3">9. setdefault(key[, default])</h3>
  <p id="fM7L"><strong>Синтаксис:</strong></p>
  <pre id="sOEX" data-lang="python">dict.setdefault(key[, default])</pre>
  <p id="ryd6"><strong>Описание:</strong><br /> Возвращает значение по указанному ключу. Если ключ отсутствует, метод добавляет его в словарь со значением <code>default</code> (по умолчанию <code>None</code>).</p>
  <p id="YxiQ"><strong>Пример:</strong></p>
  <pre id="7KQ4" data-lang="python">dict1 = {&#x27;car&#x27;: &#x27;машина&#x27;, &#x27;apple&#x27;: &#x27;яблоко&#x27;, &#x27;orange&#x27;: &#x27;апельсин&#x27;}
print(dict1.setdefault(&#x27;car&#x27;))  # Выведет &#x27;машина&#x27;
print(dict1.setdefault(&#x27;home&#x27;, &#x27;дом&#x27;))  # Выведет &#x27;дом&#x27;
print(dict1)  # Выведет {&#x27;car&#x27;: &#x27;машина&#x27;, &#x27;apple&#x27;: &#x27;яблоко&#x27;, &#x27;orange&#x27;: &#x27;апельсин&#x27;, &#x27;home&#x27;: &#x27;дом&#x27;}</pre>
  <h3 id="k8ng">10. update([other])</h3>
  <p id="9EnI"><strong>Синтаксис:</strong></p>
  <pre id="UqOA" data-lang="python">dict.update([other])</pre>
  <p id="pjJR"><strong>Описание:</strong><br /> Обновляет словарь, добавляя пары ключ-значение из другого словаря или итерируемого объекта. Существующие ключи перезаписываются новыми значениями.</p>
  <p id="td0y"><strong>Пример:</strong></p>
  <pre id="03XU" data-lang="python">dict1 = {&#x27;car&#x27;: &#x27;машина&#x27;, &#x27;apple&#x27;: &#x27;яблоко&#x27;, &#x27;orange&#x27;: &#x27;апельсин&#x27;}
dict1.update({&#x27;car&#x27;: &#x27;автомобиль&#x27;, &#x27;home&#x27;: &#x27;дом&#x27;})
print(dict1)  # Выведет {&#x27;car&#x27;: &#x27;автомобиль&#x27;, &#x27;apple&#x27;: &#x27;яблоко&#x27;, &#x27;orange&#x27;: &#x27;апельсин&#x27;, &#x27;home&#x27;: &#x27;дом&#x27;}</pre>
  <p id="VlLj">На этом данная статья заканчивается, благодарю вас за внимание! Если у вас остались вопросы, смело задавайте <a href="https://t.me/python_jungle" target="_blank">их в нашем телеграмм канале!</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@python_jungle/yAQW-t4U9ne</guid><link>https://teletype.in/@python_jungle/yAQW-t4U9ne?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle</link><comments>https://teletype.in/@python_jungle/yAQW-t4U9ne?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle#comments</comments><dc:creator>python_jungle</dc:creator><title>Методы списков в Python</title><pubDate>Thu, 15 Aug 2024 13:39:58 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/e9/23/e923fa92-dfd2-4061-a1ca-01362d8fe3ee.png"></media:content><category>python</category><description><![CDATA[<img src="https://img3.teletype.in/files/2f/a7/2fa7b71d-9ec1-4f8c-b7fa-439cf733bc97.jpeg"></img>Привет всем! В предыдущей статье &quot;Python методы строк&quot; мы подробно рассмотрели методы для работы со строками в Python. Теперь я хотел бы поделиться с вами информацией о методах, которые можно использовать для работы со списками.]]></description><content:encoded><![CDATA[
  <p id="AWmm">Привет всем! В предыдущей статье <a href="https://teletype.in/@python_jungle/WKTxamocqlx" target="_blank">&quot;Python методы строк&quot;</a> мы подробно рассмотрели методы для работы со строками в Python. Теперь я хотел бы поделиться с вами информацией о методах, которые можно использовать для работы со списками.</p>
  <p id="vhVy">В этой статье мы сосредоточимся на практических примерах, чтобы сделать материал более доступным и понятным, избегая сухого пересказа документации. Надеюсь, что эти примеры помогут вам легко усвоить материал и применять его на практике. Приятного чтения! :)</p>
  <p id="tCCc">Списки в Python, хотя и имеют ограниченное количество методов (всего 11), однако они весьма функциональны и часто применяются на практике. Я рекомендую вам внимательно изучить и запомнить эти методы, так как они являются ключевыми для работы со списками.</p>
  <h4 id="BYfT">Метод 1. append(item)</h4>
  <p id="88zo">Метод <code>append(item)</code> в Python - это метод, который позволяет нам добавить элементы в конец списка.</p>
  <p id="8yqZ">Синтаксис: </p>
  <pre id="ooxv" data-lang="python">list_name.append(item)</pre>
  <p id="0tZl">где :</p>
  <ul id="aBuS">
    <li id="OlFU"><code>list_name</code> - это имя списка</li>
    <li id="oOG4"><code>item</code> - элемент, который мы хотим добавить в КОНЕЦ списка.</li>
  </ul>
  <p id="GCBw">Рассмотрим применение этого метода, на примере:</p>
  <p id="KDTe">Представим, что вы очень преданы программированию и ведёте все свои записи в виде кода. Ну что поделать, вот такие мы программисты:)<br /> У вас есть список продуктов, которые вы хотите купить:</p>
  <pre id="KqRb" data-lang="python">shop_list = [&quot;bread&quot;, &quot;milk&quot;, &quot;egg&quot;]</pre>
  <p id="trnh">По пути в магазин вы вспомнили, что вам необходимо купить печенье. Чтобы снова про них не забыть, нужно записать их в наш список. Давайте используем только что изученный метод <code>append</code>:</p>
  <pre id="Ybxm" data-lang="python">shop_list = [&quot;bread&quot;, &quot;milk&quot;, &quot;egg&quot;]
shop_list.append(&quot;cookie&quot;)</pre>
  <p id="rtCO">Проверим что у нас получилось и выведем результат на экран:</p>
  <pre id="uREH" data-lang="python">shop_list = [&quot;bread&quot;, &quot;milk&quot;, &quot;egg&quot;]
shop_list.append(&quot;cookie&quot;)
print(shop_list)</pre>
  <p id="oAs5">Результат выполнения программы будет выглядеть вот так:</p>
  <pre id="eMxz">[&quot;bread&quot;, &quot;milk&quot;, &quot;egg&quot;, &quot;cookie&quot;]</pre>
  <p id="2p6A">Как вы можете заметить, мы добавили в КОНЕЦ нашего списка.</p>
  <p id="fJ1t">Уже второй раз, я довольно тонко намекаю на то, что мы добавляем запись именно в конец списка, но что делать если вам нужно изменить порядок и добавить запись например на первое или второе место?</p>
  <h4 id="JtSU">Метод 2. insert(index, item)</h4>
  <p id="JOPc">Метод <code>insert()</code> в Python позволяет вставить элемент в список по указанному индексу.</p>
  <p id="66Sc">Синтаксис метода <code>insert()</code>:</p>
  <pre id="cicc" data-lang="python">list_name.insert(index, item)</pre>
  <p id="SWGF">где:</p>
  <ul id="Ovah">
    <li id="Krep"><code>list_name</code> — список, в который нужно вставить элемент;</li>
    <li id="rlSC"><code>index</code> — индекс позиции, на которую нужно вставить элемент;</li>
    <li id="Nqbp"><code>item</code> — элемент, который нужно вставить в список.</li>
  </ul>
  <p id="zE5J">Продолжим нашу историю с походом в магазин. Предположим, что после добавления печенья в список покупок, вы вспомнили, что вам нужно купить масло, и купить его обязательно перед молоком. Поверьте, так нужно! Для этого мы можем использовать метод <code>insert()</code>, который позволяет вставить элемент в список по указанному индексу.</p>
  <p id="N9nV">Давайте добавим масло в наш список покупок перед молоком:</p>
  <pre id="obFq" data-lang="python">shopping_list = [&quot;bread&quot;, &quot;milk&quot;, &quot;egg&quot;, &quot;cookie&quot;]
shopping_list.insert(1, &quot;butter&quot;)</pre>
  <p id="X9aa">Проверим, что у нас получилось:</p>
  <pre id="4yPq" data-lang="python">shopping_list = [&quot;bread&quot;, &quot;milk&quot;, &quot;egg&quot;, &quot;cookie&quot;]
shopping_list.insert(1, &quot;butter&quot;)
print(shopping_list)</pre>
  <p id="0tYO">Результат выполнения программы будет выглядеть так:</p>
  <pre id="Ilcq" data-lang="python">[&quot;bread&quot;, &quot;butter&quot;, &quot;milk&quot;, &quot;egg&quot;, &quot;cookie&quot;]</pre>
  <p id="l9gk">Как видите, масло теперь находится на втором месте в списке, перед молоком.</p>
  <p id="KpMP">Отлично, по пути вы вспомнили о необходимых покупках, а вместе с этим и выучили два новых метода.</p>
  <h4 id="PMys">Метод 3. remove(item)</h4>
  <p id="CQqa">Метод <code>remove()</code> в Python позволяет удалить первый элемент из списка, который соответствует заданному значению. Если элемент не найден в списке, возникает ошибка <code>ValueError</code>.</p>
  <p id="idmI">Синтаксис метода <code>remove()</code>:</p>
  <pre id="SKcK">list.remove(item)</pre>
  <p id="iEoa">где:</p>
  <ul id="PaMF">
    <li id="m9XK"><code>list</code> — список, из которого нужно удалить элемент;</li>
    <li id="Z4rc"><code>item</code> — элемент, который нужно удалить из списка.</li>
  </ul>
  <p id="zkST">И так, вы уже в магазине, купили всё необходимое и решили заглянуть в корзину. Какого было ваше удивление, когда вы увидели в ней чипсы и колу... а ведь ещё вчера, поймав ночную мотивацию, вы решили, что начнёте правильно питаться.</p>
  <p id="2Juf">По этому вы не будете покупать чипсы, которые, чисто случайно оказались в корзине.</p>
  <p id="WWMa">Давайте удалим печенье из нашего списка покупок:</p>
  <pre id="E3gd" data-lang="python">basket = [&quot;bread&quot;, &quot;butter&quot;, &quot;chips&quot;, &quot;milk&quot;, &quot;egg&quot;, &quot;cookie&quot;, &quot;cola&quot;]
basket.remove(&quot;chips&quot;)</pre>
  <p id="RBEC">Проверим результат:</p>
  <pre id="5zO0" data-lang="python">basket = [&quot;bread&quot;, &quot;butter&quot;, &quot;chips&quot;, &quot;milk&quot;, &quot;egg&quot;, &quot;cookie&quot;, &quot;cola&quot;]
basket.remove(&quot;chips&quot;)
print(basket)</pre>
  <p id="PeRV">Результат выполнения программы будет выглядеть так:</p>
  <pre id="hzJE" data-lang="python">[&quot;bread&quot;, &quot;butter&quot;, &quot;milk&quot;, &quot;egg&quot;, &quot;cookie&quot;, &quot;cola&quot;]</pre>
  <p id="jPVR">Теперь в нашем списке покупок нет печенья.</p>
  <section style="background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <blockquote id="qHdv">Обратите внимание, что метод удаляет только первый найденный элемент соответствующий заданному значению.</blockquote>
  </section>
  <p id="YaQc">Если у вас возник вопрос: &quot;А что с колой?&quot;. Резко всё бросать нельзя, пока попридержим её. =)</p>
  <h4 id="rDEy">Метод 4. pop(index)</h4>
  <p id="GO8Y">Еще один полезный метод для работы со списками — <code>pop()</code>. Этот метод удаляет элемент по указанному индексу и возвращает его. Если индекс не указан, <code>pop()</code> удаляет и возвращает последний элемент списка.</p>
  <p id="C4wn">Синтаксис метода <code>pop()</code>:</p>
  <pre id="vvMD">list_name.pop(index)</pre>
  <p id="xsrL">где:</p>
  <ul id="g0xZ">
    <li id="GoZu"><code>list</code> — список, из которого нужно удалить элемент;</li>
    <li id="ysbJ"><code>index</code> — индекс элемента, который нужно удалить (НЕОБЯЗАТЕЛЬНЫЙ параметр).</li>
  </ul>
  <p id="ePjk">Предположим, что вы решили не покупать яйца и хотите удалить их из списка. Используем метод <code>pop()</code>:</p>
  <pre id="qdLl" data-lang="python">basket = [&quot;bread&quot;, &quot;butter&quot;, &quot;milk&quot;, &quot;egg&quot;, &quot;cookie&quot;, &quot;cola&quot;]
removed_item = basket.pop()</pre>
  <p id="HaGu">Проверим, что у нас получилось:</p>
  <pre id="8Epw" data-lang="python">basket = [&quot;bread&quot;, &quot;butter&quot;, &quot;milk&quot;, &quot;egg&quot;, &quot;cookie&quot;, &quot;cola&quot;]
removed_item = basket.pop()
print(basket)
print(f&quot;Удаленный элемент: {removed_item}&quot;)</pre>
  <p id="5iAd">Результат выполнения программы будет выглядеть так:</p>
  <pre id="q7ys" data-lang="python">[&quot;bread&quot;, &quot;butter&quot;, &quot;milk&quot;, &quot;egg&quot;, &quot;cookie&quot;]
Удаленный элемент: cola</pre>
  <p id="8Ccj">Теперь в нашей корзине нет колы, и мы знаем, что удалили именно её.</p>
  <p id="3ij8">Давайте удалим ещё что-то?) Например, 3 элемент в списке и проверим результат:</p>
  <pre id="JIdw" data-lang="python">basket = [&quot;bread&quot;, &quot;butter&quot;, &quot;milk&quot;, &quot;egg&quot;, &quot;cookie&quot;]
removed_item = basket.pop(2)
print(basket)
print(f&quot;Удаленный элемент: {removed_item}&quot;)</pre>
  <p id="CcHG">Результат выполнения программы будет выглядеть так:</p>
  <pre id="DRfz" data-lang="python">[&quot;bread&quot;, &quot;butter&quot;, &quot;egg&quot;, &quot;cookie&quot;]
Удаленный элемент: milk</pre>
  <p id="zYoq"><strong>Важно!</strong> Если ваш список будет пустым или вы укажете несуществующий индекс, тогда возникнет ошибка <code>IndexError</code>.</p>
  <h4 id="K5pZ">Метод 5. extend()</h4>
  <p id="J5fy">Метод <code>extend()</code> в Python используется для добавления элементов в конец списка из другого итерируемого объекта, такого как список, кортеж или строка. Это позволяет объединить несколько списков в один.</p>
  <p id="7PgP">Опр. <strong>Итерируемый</strong> <strong>объект</strong> (iterable) - это <strong>объект</strong>, который способен возвращать элементы по одному.</p>
  <p id="4Qax">P.S. Это довольно сложное определение для начинающих. Условно запомните, что итерируемый объект это тот, который состоит из нескольких других. Из нами изученных это: строки и списки.</p>
  <p id="AI8r">Синтаксис метода <code>extend()</code> выглядит следующим образом:</p>
  <pre id="C97c">list_name.extend(iterable)</pre>
  <p id="uqOg">где:</p>
  <ul id="llV5">
    <li id="ZkpF"><code>list_name</code> — имя списка, к которому применяется метод</li>
    <li id="pMPT"><code>iterable</code> — итерируемый объект, элементы которого нужно добавить в список.</li>
  </ul>
  <p id="ywr2">Пример:</p>
  <pre id="L7Ly" data-lang="python">my_list = []
my_list.extend([1, 2, 3])  # my_list = [1, 2, 3]
my_list.extend(&#x27;add&#x27;)  # my_list = [1, 2, 3, &#x27;a&#x27;, &#x27;d&#x27;, &#x27;d&#x27;]</pre>
  <p id="XCJw">В предыдущем примере, метод <code>pop</code> мог вернуть нам объект, который он &quot;забрал&quot; из списка. Так вот, если вы попробуете присвоить результат применения метода <code>extend</code> какой либо переменной, то вы получите <code>None</code>.</p>
  <p id="3lUP"><code>None</code> - это особый тип данных, который обозначает &quot;ничего&quot; или &quot;пустоту&quot;.</p>
  <h4 id="jAgJ">Метод 6. clear()</h4>
  <p id="eHXt">Бывают случаи, когда вы не хотите удалять список, но вам необходимо очистить его. Для этой задачи идеально подходит метод <code>clear()</code>.</p>
  <p id="Iuxu">Синтаксис метода <code>clear</code>:</p>
  <pre id="NWNI">your_list.clear()</pre>
  <p id="3jMj">где <code>your_list</code> — это список, для которого мы хотим удалить все элементы.</p>
  <p id="bJNv">Давайте вспомним наш пример с магазином и уберем вообще все продукты из корзины:</p>
  <pre id="9ml6" data-lang="python">basket = [&quot;bread&quot;, &quot;butter&quot;, &quot;egg&quot;, &quot;cookie&quot;]
basker.clear()
print(basket)</pre>
  <p id="g9JX">Выведет:</p>
  <pre id="3rIm">[]</pre>
  <p id="gHmy">В этом примере мы взяли нашу корзину и удалили все продукты из неё. Как вы можете заметить, теперь наш список (корзина из примера) стал пустым.</p>
  <h4 id="t3pr">Метод 7. count(item)</h4>
  <p id="wQSX">Иногда вам будет необходимо подсчитать количество определенных элементов в списке. На небольших данных, мы можем сделать это быстро и вручную, но что если у нас в списке 100, 1000 или 1.000.000 элементов? Для этого существует метод <code>count()</code>.</p>
  <p id="Trqg">Его синтаксис, весьма прост:</p>
  <pre id="Vxgj">your_list.count(item)</pre>
  <p id="yhAl">где:</p>
  <ul id="SR5i">
    <li id="dcY9"><code>your_list</code> - это список, в котором необходимо подсчитать число входящих элементов</li>
    <li id="WRPF"><code>item</code> - искомый элемент, количество которого хотим найти</li>
  </ul>
  <p id="NwDS">Пример 1.</p>
  <p id="irb2">У нас есть список оценок учащихся за контрольную по математике и нам нужно посчитать количество &quot;5&quot;, &quot;4&quot;, &quot;3&quot; и &quot;2&quot;:</p>
  <pre id="NDj3" data-lang="python">test_scores = [5, 4, 5, 4, 3, 4, 3, 3, 2, 5, 3, 4, 5, 5, 
               4, 5, 4, 3, 5, 4, 3, 5, 4, 4, 2, 4, 3, 5, 4]

count_5 = test_scores.count(5)
count_4 = test_scores.count(4)
count_3 = test_scores.count(3)
count_2 = test_scores.count(2)

print(count_5) # 9
print(count_4) # 11
print(count_3) # 7
print(count_2) # 2</pre>
  <p id="eoNr">Пример 2.</p>
  <p id="uj98">Мы можем считать не только количество чисел, но и любых других объектов в Python:</p>
  <pre id="Q9kK" data-lang="python">mixed_list = [&quot;apple&quot;, &quot;banana&quot;, &quot;apple&quot;, 1, 2, &quot;banana&quot;, 1, &quot;apple&quot;]

apple_count = mixed_list.count(&quot;apple&quot;)
banana_count = mixed_list.count(&quot;banana&quot;)
number_one_count = mixed_list.count(1)

print(f&quot;Количество &#x27;apple&#x27;: {apple_count} шт&quot;)
print(f&quot;Количество &#x27;banana&#x27;: {banana_count} шт&quot;)
print(f&quot;Количество числа 1: {number_one_count} шт&quot;)</pre>
  <p id="G7od">Выведет:</p>
  <pre id="iJFi" data-lang="python">Количество &#x27;apple&#x27;: 3 шт
Количество &#x27;banana&#x27;: 2 шт
Количество цифры 1: 2 шт</pre>
  <h4 id="k8iQ">Метод 8. reverse()</h4>
  <p id="3Ybc">Что делать, если нам нужно отобразить элементы списка в обратном порядке? Конечно же использовать метод <code>reverse()</code>.</p>
  <p id="8zDT">Синтаксис этого метода весьма прост:</p>
  <pre id="fj22">your_list.reverse()</pre>
  <p id="aDII">где:</p>
  <ul id="1WWG">
    <li id="nWzI"><code>your_list</code> - список, порядок которого мы хотим изменить.</li>
  </ul>
  <p id="YOCO">Пример:</p>
  <pre id="y2mQ" data-lang="python">fruits = [&quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;, &quot;date&quot;]

# Использование метода reverse() для изменения порядка элементов
fruits.reverse()

print(fruits)</pre>
  <p id="Gzou">Выведет:</p>
  <pre id="BlbN" data-lang="python">[&#x27;date&#x27;, &#x27;cherry&#x27;, &#x27;banana&#x27;, &#x27;apple&#x27;]</pre>
  <p id="XTah">Таким образом, метод <code>reverse()</code> позволяет легко и быстро изменить порядок элементов в списке на обратный</p>
  <h4 id="b3O5">Метод 9. sort()</h4>
  <p id="S4bF">Элементы в списке разбросаны в непонятном порядке? Вы хотите это исправить? Используйте метод <code>sort()</code>. Он сортирует элементы списка в порядке возрастания или убывания. По умолчанию он сортирует значения в порядке возрастания.</p>
  <p id="pu1E">При этом, данный метод изменяет исходный объект, а не создаёт новый.</p>
  <p id="zJow">Его синтаксис:</p>
  <pre id="xytO" data-lang="python">your_list.sort(key=None, reverse=False)</pre>
  <p id="vAMA">где:</p>
  <ul id="N2Gt">
    <li id="Lpak"><code>your_list</code> - список, который необходимо отсортировать</li>
    <li id="VjIX"><code>reverse</code> (необязательно): для reverse=True, это приведет к сортировке списка по убыванию. По умолчанию значение reverse=False (Сортировка по возрастанию)</li>
    <li id="MlxA"><code>key</code> (необязательно) – функция для указания критериев сортировки</li>
  </ul>
  <h3 id="0ovR">Примеры:</h3>
  <p id="OTar"><strong>Пример 1: Сортировка по возрастанию</strong></p>
  <pre id="MIbM" data-lang="python">numbers = [4, 2, 1, 3, 5]
numbers.sort()
print(numbers)  # Вывод: [1, 2, 3, 4, 5]</pre>
  <p id="kQxK">Здесь мы имеем список чисел <code>[4, 2, 1, 3, 5]</code>. Используя метод <code>sort()</code>, мы сортируем элементы этого списка в порядке возрастания. После выполнения метода, список изменяется, и его элементы располагаются в последовательности от меньшего к большему: <code>[1, 2, 3, 4, 5]</code>.</p>
  <p id="Xemr"><strong>Пример 2: Сортировка по убыванию</strong></p>
  <pre id="6o3m" data-lang="python">numbers = [4, 2, 1, 3, 5]
numbers.sort(reverse=True)
print(numbers)  # Вывод: [5, 4, 3, 2, 1]</pre>
  <p id="KMR8">В этом примере мы снова начинаем с того же списка чисел <code>[4, 2, 1, 3, 5]</code>. Однако на этот раз мы используем параметр <code>reverse=True</code> в методе <code>sort()</code>, чтобы отсортировать элементы в порядке убывания. В результате, список изменяется, и его элементы располагаются от большего к меньшему: <code>[5, 4, 3, 2, 1]</code>.</p>
  <p id="sMR9"><strong>Пример 3: Сортировка с использованием ключа</strong></p>
  <pre id="lea2" data-lang="python">words = [&quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;, &quot;date&quot;]
words.sort(key=len)  # Сортировка по длине строк
print(words)  # Вывод: [&#x27;date&#x27;, &#x27;apple&#x27;, &#x27;banana&#x27;, &#x27;cherry&#x27;]</pre>
  <p id="TrbX">Тут мы работаем со списком строк <code>[&quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;, &quot;date&quot;]</code>. Перед нами стоит задача отсортировать эти строки не по алфавиту, а по их длине. Для этого мы используем параметр <code>key=len</code> в методе <code>sort()</code>, который указывает, что сортировка должна быть выполнена на основе длины строк. В результате, список изменяется, и строки располагаются в порядке возрастания их длины: <code>[&#x27;date&#x27;, &#x27;apple&#x27;, &#x27;banana&#x27;, &#x27;cherry&#x27;]</code>.</p>
  <p id="gIIg">В этом примере <code>len</code>, переданная как значение ключа - это функция <code>len()</code>, для расчёта длины строки.</p>
  <p id="40ls"><strong>Пример 4: Сортировка списка словарей по ключу</strong></p>
  <p id="yon2">(Это сложный пример можете его пропустить, если только начинаете изучать язык)</p>
  <p id="BWVF">Допустим у нас есть список словарей, где каждый словарь представляет собой информацию о человеке с именем и возрастом. Мы хотим отсортировать этот список по возрасту.</p>
  <p id="ivxM">Для этого мы используем параметр <code>key</code> с функцией-лямбдой <code>lambda x: x[&quot;age&quot;]</code>, которая указывает, что сортировка должна быть выполнена по значению ключа <code>&quot;age&quot;</code> в каждом словаре.</p>
  <pre id="iWz5" data-lang="python">people = [
    {&quot;name&quot;: &quot;Alice&quot;, &quot;age&quot;: 30},
    {&quot;name&quot;: &quot;Bob&quot;, &quot;age&quot;: 25},
    {&quot;name&quot;: &quot;Charlie&quot;, &quot;age&quot;: 35}
]
people.sort(key=lambda x: x[&quot;age&quot;])  # Сортировка по возрасту
print(people)</pre>
  <p id="TdGL">Выведет:</p>
  <pre id="XSHS" data-lang="python">[{&#x27;name&#x27;: &#x27;Bob&#x27;, &#x27;age&#x27;: 25}, {&#x27;name&#x27;: &#x27;Alice&#x27;, &#x27;age&#x27;: 30}, {&#x27;name&#x27;: &#x27;Charlie&#x27;, &#x27;age&#x27;: 35}]</pre>
  <p id="SgeE">В результате, список изменяется, и словари располагаются в порядке возрастания возраста: <code>[{&#x27;name&#x27;: &#x27;Bob&#x27;, &#x27;age&#x27;: 25}, {&#x27;name&#x27;: &#x27;Alice&#x27;, &#x27;age&#x27;: 30}, {&#x27;name&#x27;: &#x27;Charlie&#x27;, &#x27;age&#x27;: 35}]</code>.</p>
  <h4 id="KTW2">Метод 10. index()</h4>
  <p id="ohuK">Метод <code>index()</code> в Python используется для нахождения индекса первого вхождения заданного элемента в списке. Если элемент не найден, метод вызывает исключение <code>ValueError</code>. Этот метод особенно полезен, когда вам нужно знать позицию конкретного элемента в списке.</p>
  <p id="ZqYe">Синтаксис метода <code>index()</code>:</p>
  <pre id="23rG" data-lang="python">temp_list.index(value, start, end)</pre>
  <p id="WoCC">где:</p>
  <ul id="LQ8k">
    <li id="mWIL"><code>value</code> — элемент, который мы ищем в списке <code>temp_list</code>.</li>
    <li id="TbDd"><code>start</code> (необязательный параметр, по умолчанию 0) — индекс начала среза в списке, в котором требуется найти элемент. Индекс берется включительно.</li>
    <li id="ChVp"><code>end</code> (необязательный параметр, по умолчанию None, что означает конец списка) — индекс конца среза списка, в котором требуется найти элемент. Конечный индекс не входит в отрезок для поиска.</li>
  </ul>
  <p id="zwTR"><strong>Примеры использования:</strong></p>
  <p id="22o3">Пример 1. Давайте просто найдём индекс какого-то элемента в нашем списке:</p>
  <pre id="VXs9" data-lang="python">fruits = [&#x27;apple&#x27;, &#x27;banana&#x27;, &#x27;cherry&#x27;]
index = fruits.index(&#x27;banana&#x27;)
print(index)  # Вывод: 1</pre>
  <p id="ptJE">При чём, если у нас будет несколько одинаковых элементов, то мы всё равно получим индекс первого найденного:</p>
  <pre id="ARPp" data-lang="python">fruits = [&#x27;apple&#x27;, &#x27;banana&#x27;, &#x27;banana&#x27;, &#x27;cherry&#x27;]
index = fruits.index(&#x27;banana&#x27;)
print(index)  # Вывод: 1</pre>
  <p id="ApL9">Пример 2. Попробуем использовать необязательные параметры этого метода:</p>
  <pre id="ytvC" data-lang="python">numbers = [10, 20, 30, 40, 50, 20, 60]
index = numbers.index(20, 2, 5)
print(index)</pre>
  <p id="5PFJ">Выведет:</p>
  <pre id="MrB4" data-lang="python">Traceback (most recent call last):
  File &quot;main.py&quot;, line 2, in &lt;module&gt;
	index = numbers.index(20, 2, 5)
ValueError: 20 is not in list</pre>
  <p id="DM04">Разберемся с результатом... В качестве искомого объекта мы выбрали число <code>20</code>, но при этом указали, что хотим начать поиск со второго объекта в списке и не будем проверять список до конца, а остановимся на пятом элементе.</p>
  <p id="9EL0">Первая <code>20</code> имела индекс <code>1</code>, она не входит в наш интервал. Вторая <code>20</code> в этом списке имеет индекс <code>5</code>, что находится на границе указанного нами интервала.</p>
  <p id="MCjO">Ошибка возникла потому, что конечный индекс не включается в качестве результирующего.</p>
  <h4 id="SWjt">Метод 11. copy()</h4>
  <p id="wRZg">Этот метод возвращает поверхностную копию исходного списка. Действие метода эквивалентно выражению <code>my_list[:]</code>.</p>
  <p id="7X10">Для людей, которые хорошо ознакомились со срезами, данный синтаксис будет понятным, если же данное знание вызвало затруднение, то вам следует прочитать статью <a href="https://teletype.in/@python_jungle/QSs2UCzZCOI" target="_blank">&quot;Строки и операции над ними&quot;</a>, где я подробно рассказал, про индексы и срезы ;)</p>
  <p id="hHiD">Синтаксис метода <code>copy()</code>:</p>
  <pre id="mKYF" data-lang="python">copy_list = main_list.copy()</pre>
  <p id="OH92">где:</p>
  <ul id="74oW">
    <li id="3pQC"><code>main_list</code> - это список, который мы хотим скопировать</li>
    <li id="Lww3"><code>copy_list</code> - это список, который получился в результате копирования основного</li>
  </ul>
  <p id="JTVB">Важное уточнение: возвращаемая копия является поверхностной, то есть без рекурсивного копирования вложенных элементов. Проще говоря, если вы измените что-то в поверхностной копии, это изменение будет отражено и в исходном списке, если оно касается общих элементов.</p>
  <p id="Y15h">Пример:</p>
  <pre id="eQeq" data-lang="python">main_list = [1, 2, [3, 4]]
copy_list = main_list.copy()

# Изменим парочку элементов в поверхностной копии
copy_list[2][0] = 5
copy_list[0] = 3

print(main_list)  # Вывод: [1, 2, [5, 4]]
print(copy_list)  # Вывод: [3, 2, [5, 4]]</pre>
  <p id="09QX">В этом примере видно, что изменение во вложенном списке отразилось и в исходном списке <code>main_list</code>, так как поверхностная копия не копирует вложенные объекты рекурсивно. В то же время, при изменении &quot;первичного&quot; объекта, мы изменили только поверхностную копию.</p>
  <p id="xQCF">Сейчас это может быть немного трудным, но подробнее о &quot;поверхностных&quot; и &quot;глубоких&quot; копиях, мы поговорим в одной из следующих статьей! ;)</p>
  <p id="ZpRw">На этом данная статья заканчивается, благодарю вас за внимание! Если у вас остались вопросы, смело задавайте <a href="https://t.me/python_jungle" target="_blank">их в нашем телеграмм канале!</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@python_jungle/i36WsTS1rNi</guid><link>https://teletype.in/@python_jungle/i36WsTS1rNi?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle</link><comments>https://teletype.in/@python_jungle/i36WsTS1rNi?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle#comments</comments><dc:creator>python_jungle</dc:creator><title>Списки в Python</title><pubDate>Wed, 31 Jul 2024 15:41:02 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/e9/23/e923fa92-dfd2-4061-a1ca-01362d8fe3ee.png"></media:content><category>python</category><description><![CDATA[<img src="https://img3.teletype.in/files/2f/a7/2fa7b71d-9ec1-4f8c-b7fa-439cf733bc97.jpeg"></img>Сегодня мы подробно поговорим о, пожалуй, самых важных объектах в Python — списках. Разберём, зачем они нужны, как их использовать и какие удобные функции есть для работы с ними.]]></description><content:encoded><![CDATA[
  <p id="GuBM">Сегодня мы подробно поговорим о, пожалуй, самых важных объектах в Python — списках. Разберём, зачем они нужны, как их использовать и какие удобные функции есть для работы с ними.</p>
  <h3 id="sbBZ">Что такое списки?</h3>
  <p id="7LbF"><strong>Список (list)</strong> - это упорядоченный набор элементов, каждый из которых имеет свой номер, или <strong>индекс</strong>, позволяющий быстро получить к нему доступ. Индексация элементов в списке, как и в <a href="https://teletype.in/@python_jungle/QSs2UCzZCOI" target="_blank">строках</a>, начинается с 0. Являясь изменяемым типом данных, содержимое списков можно изменять и после создания.</p>
  <h3 id="6HTl">Зачем нужны списки?</h3>
  <p id="ByHY">Вы могли подумать, что списки кажутся бесполезными. Однако это далеко не так, и, более того, списки являются одними из самых мощных и часто используемых структур данных в Python в целом.</p>
  <p id="Xsux">При помощи списков, вы можете объединять элементы разных типов данных, что делает их очень гибкими. Например, вы можете иметь список, содержащий целые числа, строки и даже другие списки.</p>
  <p id="uPGS">Кроме того, списки предлагают обширный набор инструментов для работы с ними. Например, различные методы (<code>append()</code>, <code>remove()</code>, <code>sort()</code>, <code>reverse()</code>), поддержка индексации и срезов, ну и конечно же вложенности.</p>
  <p id="GUaU">Это были объективные плюсы использования списков, но в тоже время...</p>
  <ul id="Ht0r">
    <li id="pPNl">Списки позволяют вам организовать данные в упорядоченную структуру, что упрощает их обработку и анализ.</li>
    <li id="hVIr">Работа с группой элементов как с единым целым позволяет упростить код и сделать его более читаемым и эффективным.</li>
  </ul>
  <p id="FSBX">Освоение работы со списками — это важный шаг для любого программиста, работающего с этим языком.</p>
  <h4 id="70x0">Как создавать списки?</h4>
  <p id="QpzO">Это можно сделать несколькими способами, например вы можете просто перечислить элементы в квадратных скобках:</p>
  <figure id="wing" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/a03/2f6/9d9/a032f69d9d58d1f1adb6c89ba6b58bd2.png" width="1326" />
  </figure>
  <p id="7ocq">Второй способ, это использовать функцию - <code>list()</code>. Она может быть использована для создания списка из других итерируемых объектов, таких как строки, кортежи или другие списки.</p>
  <p id="BaUF"><strong>Пример 1: Список из строки</strong></p>
  <figure id="BuMT" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/5d3/3d3/d4c/5d33d3d4c590364a04548a9d4c57fae1.png" width="1204" />
  </figure>
  <p id="i1sT"><strong>Пример 2: Список из кортежа</strong></p>
  <figure id="x0ur" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/b19/0a2/add/b190a2add0fea7c6f660b4c5dd25bea1.png" width="942" />
  </figure>
  <p id="aGJO">Не обращайте, внимания на то, что мы ещё не изучили кортежи. Это просто пример ;)</p>
  <p id="kEMW">Так же существуют генераторы списков, я приведу парочку примеров их создания.<br /> Однако устройство и их работу мы разберем в отдельной статье. Я считаю, что для новичков это избыточная и довольно сложная, в плане усвоения и понимания, информация.</p>
  <p id="7pe9"><strong>Пример 1: Создание списка с квадратами чисел</strong></p>
  <figure id="ehVn" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/713/784/d06/713784d06fce37a4ed56118f969a40dd.png" width="942" />
  </figure>
  <p id="qg0U"><strong>Пример 2: Список Фильтрация четных чисел</strong></p>
  <figure id="ii09" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/c3c/b97/0aa/c3cb970aab61dbcec1cc7101d1387524.png" width="1080" />
  </figure>
  <p id="j16t">Совсем скоро мы познакомимся с циклами и условиями в Python, и этот код перестанет быть для вас чем-то страшным и непонятным:)</p>
  <h3 id="0LdL">Доступ к элементам из списка</h3>
  <p id="gY9E">В целом доступ к элементам списка, ничем не отличается от индексации строк, за исключением возможности вложенных списков.</p>
  <p id="ZdCE">Таким образом, чтобы получить доступ к элементам списка, необходимо использовать оператор индекса <code>[]</code>. Сам индекс должен быть целым числом и указывает на позицию элемента в списке. Доступ к элементам списка можно получить как с начала, так и с конца, используя положительные и отрицательные индексы соответственно.</p>
  <h4 id="pnBT">Примеры доступа к элементам списка</h4>
  <h3 id="drQn">Положительная индексация</h3>
  <figure id="zyi5" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/45b/cb5/faa/45bcb5faaa68ac77450f9c9e4c54f3b5.png" width="928" />
  </figure>
  <h3 id="8tNt">Отрицательная индексация</h3>
  <p id="Oldx">В Python можно использовать отрицательные индексы для доступа к элементам списка, начиная с конца. Индекс <code>-1</code> относится к последнему элементу, <code>-2</code> — к предпоследнему и так далее.</p>
  <figure id="9FrT" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/76e/8d1/f29/76e8d1f29bcdac5d99a327960b2a549f.png" width="928" />
  </figure>
  <h4 id="6CqC">Доступ к элементам вложенных списков</h4>
  <p id="NXps">Этот пункт, часто вызывает затруднения у новичков. Мой совет - посоздавайте свои вложенные списки и поработайте с ними. Таким образом вы довольно хорошо преисполнитесь в понимании индексации и понятия &quot;вложенности&quot;.</p>
  <p id="bcB1">Если список содержит другие списки (вложенные списки), доступ к элементам внутренних списков осуществляется с помощью вложенной индексации.</p>
  <figure id="kXjG" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/2c5/9df/fc2/2c59dffc214f5ed7a92af9a322dae9b8.png" width="1126" />
  </figure>
  <h4 id="t6xM">Примеры с отрицательной индексацией во вложенных списках</h4>
  <figure id="641B" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/78c/a03/51f/78ca0351fe062ff283f37eac0b4fc986.png" width="1224" />
  </figure>
  <h3 id="y5la">Работа со списками и полезные методы</h3>
  <h4 id="45VN">Получение размера списка Python</h4>
  <p id="hErS">В Python для получения длины списка можно использовать встроенную функцию <code>len()</code>. Эта функция возвращает количество элементов в списке. Давайте рассмотрим несколько примеров, включая примеры с вложенными списками, и объясним их результаты.</p>
  <h3 id="pc85">Пример 1: Простой список</h3>
  <p id="4MUv">В этом примере <code>len(simple_list)</code> возвращает 5, так как в списке <code>simple_list</code> пять элементов.</p>
  <figure id="uGfl" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/79a/120/83c/79a12083c6f4feef4aa37a64b3a4e0bc.png" width="1224" />
  </figure>
  <h3 id="Nt8t">Пример 2: Список со вложенными списками</h3>
  <figure id="LGGG" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/bd4/bbd/08a/bd4bbd08a99f96d9432a94b7a53f7ced.png" width="1224" />
  </figure>
  <p id="edX7">В этом примере <code>len(nested_list)</code> возвращает 3, так как в списке <code>nested_list</code> три элемента, каждый из которых является вложенным списком.</p>
  <h3 id="MJ0v">Пример 3: Получение размера вложенного списка</h3>
  <figure id="IyVo" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/3c4/29a/cc8/3c429acc8eda7782ae9778406341baa7.png" width="1224" />
  </figure>
  <p id="1HlM">В этом примере <code>len(nested_list[0])</code> возвращает 3, так как первый элемент в <code>nested_list</code> является списком <code>[1, 2, 3]</code>, который содержит три элемента.</p>
  <h3 id="YLTu">Пример 4: Список с различными типами данных</h3>
  <figure id="u9sf" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/e0c/438/44e/e0c43844eab0ff4b11e506fdbdb70402.png" width="1224" />
  </figure>
  <p id="Xnfg">В этом примере <code>len(mixed_list)</code> возвращает 5, так как в списке <code>mixed_list</code> пять элементов различных типов данных.</p>
  <h4 id="fga6">Добавление элементов в список Python</h4>
  <h3 id="HuAo">Метод 1: Использование метода append()</h3>
  <p id="cBq9">Элементы могут быть добавлены в список с помощью встроенного метода <code>append()</code>. Этот метод позволяет добавлять только один элемент за раз в конец списка.</p>
  <p id="J6PN"><strong>Пример:</strong></p>
  <figure id="Gko4" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/651/f8d/403/651f8d403d37d097bae6a04cac0ab15a.png" width="1224" />
  </figure>
  <h3 id="zpbq">Метод 2: Использование метода insert()</h3>
  <p id="B9OI">Метод <code>append()</code> добавляет элементы только в конец списка. Для добавления элементов в нужную позицию используется метод <code>insert()</code>. В отличие от <code>append()</code>, который принимает только один аргумент, метод <code>insert()</code> требует двух аргументов: позицию и значение.</p>
  <p id="0fTV"><strong>Пример:</strong></p>
  <figure id="WD7Z" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/270/083/c59/270083c596d64ec7d8f97c1b620d358e.png" width="1224" />
  </figure>
  <h3 id="VpL8">Метод 3: Использование метода extend()</h3>
  <p id="Ruj6">Метод <code>extend()</code> используется для одновременного добавления нескольких элементов в конец списка. Этот метод принимает итерируемый объект (например, другой список) и добавляет все его элементы в текущий список.</p>
  <p id="QCGD"><strong>Пример:</strong></p>
  <figure id="Ed7Q" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/de7/f23/85d/de7f2385d5a6049cbe0a09af77ec9c10.png" width="1294" />
  </figure>
  <h4 id="C8hj">Переворачивание списка</h4>
  <h3 id="eTNt">Метод 1: Использование метода reverse()</h3>
  <p id="Od9Z">Список можно перевернуть с помощью метода <code>reverse()</code>, который изменяет порядок элементов в списке на обратный.</p>
  <p id="KcyW"><strong>Пример:</strong></p>
  <figure id="oH3U" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/59b/c6e/64a/59bc6e64a58b97bb08585dfb5acff9a9.png" width="1294" />
  </figure>
  <h3 id="ccUZ">Метод 2: Использование функции reversed()</h3>
  <p id="XSV0">Функция <code>reversed()</code> возвращает обратный итератор, который может быть преобразован в список с помощью функции <code>list()</code>. (Да это звучит довольно сложно, но ничего, пока используйте наиболее понятный для вас способ)</p>
  <p id="Xj8Q"><strong>Пример:</strong></p>
  <figure id="uWC5" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/6db/0da/593/6db0da59348314f169347912b4fb4ced.png" width="1294" />
  </figure>
  <h3 id="E1bq">Метод 3: Использование среза</h3>
  <p id="eW7h">Да-да, используя срезы вы можете перевернуть список. Внимание, следите за руками :)</p>
  <figure id="pQiW" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/562/eaa/af6/562eaaaf615326759ed5bd816c6356ea.png" width="1294" />
  </figure>
  <h3 id="o9Lt">Сортировка списков. Метод sort()</h3>
  <p id="35U2">Часто встречаются задачи, где необходимо вывести отсортированный список в определенном порядке. Для этого у каждого списка в Python есть специальный метод — <code>sort()</code>. По умолчанию он сортирует элементы от меньшего к большему.</p>
  <h4 id="axux">Пример сортировки чисел по возрастанию</h4>
  <figure id="12sR" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/3f4/111/877/3f4111877d7c639629a3ec5fd9a4f27d.png" width="1294" />
  </figure>
  <h4 id="6IWp">Пример сортировки чисел по убыванию</h4>
  <p id="ukMZ">Для сортировки элементов от большего к меньшему можно использовать параметр <code>reverse</code>:</p>
  <figure id="PPVR" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/72d/f47/8ab/72df478ab1265e5968f3cbbcb9cf60e1.png" width="1294" />
  </figure>
  <h4 id="TMvz">Сортировка строк</h4>
  <p id="9d1m">Сортировка строк выполняется на основе лексикографического порядка (то есть по алфавиту). Python сравнивает строки посимвольно, используя ASCII-значения символов.</p>
  <h3 id="GlK8">Пример сортировки строк по возрастанию</h3>
  <figure id="v7nT" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/9a8/1b8/853/9a81b88539704bae9e0154496e944484.png" width="1294" />
  </figure>
  <h3 id="qshn">Пример сортировки строк по убыванию</h3>
  <figure id="eCAH" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/1d2/ef0/50d/1d2ef050d280cd4fc75dcba6aafb4f34.png" width="1294" />
  </figure>
  <h4 id="PQn1">Сортировка с использованием ключа</h4>
  <p id="3EMl">Иногда требуется сортировка по определенному критерию. Для этого можно использовать параметр <code>key</code>, который принимает функцию, определяющую порядок сортировки.</p>
  <h3 id="d4Jg">Пример сортировки списка словарей по значению ключа</h3>
  <figure id="21q7" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/bea/1b5/f98/bea1b5f989d5cf593e247a23e12e3fe7.png" width="1338" />
  </figure>
  <h4 id="acMk">Операции над списками</h4>
  <p id="aUsJ">Давайте рассмотрим каждый из перечисленных операторов и функций, связанных со списками в Python, и предоставим примеры для лучшего понимания.</p>
  <h3 id="1mLN">1. x in mylist — вернет True, если элемент x есть в списке mylist</h3>
  <p id="P3ZX">Этот оператор проверяет, содержится ли элемент <code>x</code> в списке <code>mylist</code> .<br /> <strong>Пример:</strong></p>
  <figure id="UOA0" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/fee/b79/dca/feeb79dca9524a01385a76166d16ef2e.png" width="1294" />
  </figure>
  <h3 id="q07k">2. x not in mylist — вернет True, если элемент x отсутствует в mylist</h3>
  <p id="6NN8">Этот оператор проверяет, отсутствует ли элемент <code>x</code> в списке <code>mylist</code>.</p>
  <p id="T5bH"><strong>Пример:</strong></p>
  <figure id="dbZU" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/70c/c9d/d8f/70cc9dd8fb68ffb6e4650b5b09aa3716.png" width="1294" />
  </figure>
  <h3 id="bxhy">3. mylist1 + mylist2 — объединение двух списков</h3>
  <p id="4Kd8">Этот оператор объединяет два списка <code>mylist1</code> и <code>mylist2</code> в один новый список.</p>
  <p id="JHbK"><strong>Пример:</strong></p>
  <figure id="Ok0L" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/b45/973/8ae/b459738ae9c50d30df6d93ac66336b81.png" width="1294" />
  </figure>
  <h3 id="RtoV">4. mylist * n, n * mylist — копирует список n раз</h3>
  <p id="04rg">Этот оператор создает новый список, который является копией списка <code>mylist</code>, повторенного <code>n</code> раз.</p>
  <p id="N5Ai"><strong>Пример:</strong></p>
  <figure id="HKAW" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/605/ef6/a3f/605ef6a3f38d8f52edc70d0468b56acb.png" width="1294" />
  </figure>
  <h4 id="HDR2">6. min(mylist) — наименьший элемент</h4>
  <p id="iVBQ">Эта функция возвращает наименьший элемент в списке <code>mylist</code>.</p>
  <p id="hZed"><strong>Пример:</strong></p>
  <figure id="Bwyy" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/b58/318/79f/b5831879f54ab6d34eac631121280f0c.png" width="1294" />
  </figure>
  <h4 id="z1rH">7. max(mylist) — наибольший элемент</h4>
  <p id="YBV4">Эта функция возвращает наибольший элемент в списке <code>mylist</code>.</p>
  <p id="acHu"><strong>Пример:</strong></p>
  <figure id="oTVL" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/6ed/89f/a06/6ed89fa065e19dbab5a36ffb124279a5.png" width="1294" />
  </figure>
  <h4 id="rXof">8. sum(mylist) — сумма чисел списка</h4>
  <p id="qtoB">Эта функция возвращает сумму всех чисел в списке <code>mylist</code>.</p>
  <p id="ZjJA"><strong>Пример:</strong></p>
  <figure id="KLvf" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/741/062/e6d/741062e6d107ba6fa6593455ab5d43a5.png" width="1294" />
  </figure>
  <p id="bggs">Эти операторы и функции являются основными инструментами для работы со списками в Python. На самом деле, методов и функций для работы со списками, гораздо больше и полный их список с применением и объяснением примеров будет в следующей статье по этой теме. Как только она будет написана, я добавлю ссылку в эту статью для удобства изучения.</p>
  <p id="Q0HA"></p>
  <p id="PrZy">Подписывайтесь на наш телеграмм канал: <a href="https://t.me/python_jungle" target="_blank">ссылка на канал!</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@python_jungle/WKTxamocqlx</guid><link>https://teletype.in/@python_jungle/WKTxamocqlx?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle</link><comments>https://teletype.in/@python_jungle/WKTxamocqlx?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle#comments</comments><dc:creator>python_jungle</dc:creator><title>Python: основные методы строк</title><pubDate>Thu, 18 Jul 2024 14:07:01 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/e9/23/e923fa92-dfd2-4061-a1ca-01362d8fe3ee.png"></media:content><category>IT</category><description><![CDATA[<img src="https://img3.teletype.in/files/2f/a7/2fa7b71d-9ec1-4f8c-b7fa-439cf733bc97.jpeg"></img>Приветствую всех читателей! Сегодня рассмотрим основные методы строк, которые позволят нам быстро, удобно и без заморочек решать часто возникаемые задачи.]]></description><content:encoded><![CDATA[
  <p id="W7rA"><strong>Приветствую всех читателей!</strong> Сегодня рассмотрим основные методы строк, которые позволят нам быстро, удобно и без заморочек решать часто возникаемые задачи. Мы с вами рассмотрим все стандартные методы, а позже выделим группу тех, что используются наиболее часто.</p>
  <p id="v2DW"><strong>Методы строк в Python</strong> — это встроенные функции, которые можно применять к строковым объектам для выполнения различных операций, таких как изменение, поиск, сравнение и т. д.</p>
  <p id="TENQ">Чтобы вызвать метод для конкретной строки, необходимо указать объект, поставить точку, записать имя метода и в круглых скобках список аргументов, если они необходимы: <code>объект.метод(аргументы)</code></p>
  <h3 id="nS5G">Формально я разделяю все методы на:</h3>
  <ol id="sSrR">
    <li id="6iHG">Методы для сравнения строк</li>
    <li id="992d">Методы изменяющие строки</li>
    <li id="zxNj">Методы для поиска подстрок</li>
    <li id="o40o">Методы ASCII</li>
  </ol>
  <h3 id="yrL4">Методы сравнения</h3>
  <p id="Fk0q">Эти методы сравнивают строки на соответствие с определенным типом данных или параметром. Вот некоторые из них:</p>
  <ul id="GTAH">
    <li id="aF0V"><code>isalpha()</code>: Проверяет, состоит ли строка только из букв.</li>
    <li id="GV2d"><code>isdigit()</code>: Проверяет, состоит ли строка только из цифр.</li>
    <li id="9LYx"><code>isnumeric()</code>: Проверяет, состоит ли строка только из числовых символов.</li>
    <li id="WRtj"><code>isalnum()</code>: Проверяет, состоит ли строка только из букв и цифр.</li>
    <li id="mbJC"><code>istitle()</code>: Проверяет, является ли строка заголовком (каждое слово начинается с заглавной буквы).</li>
    <li id="MQ27"><code>isspace()</code>: Проверяет, состоит ли строка только из пробельных символов.</li>
    <li id="q3xK"><code>islower()</code>: Проверяет, являются ли все буквы в строке строчными.</li>
    <li id="67yD"><code>isupper()</code>: Проверяет, являются ли все буквы в строке заглавными.</li>
    <li id="j24T"><code>startswith(str)</code>: Проверяет, начинается ли строка с подстроки <code>str</code>.</li>
    <li id="awF0"><code>endswith(str)</code>: Проверяет, заканчивается ли строка подстрокой <code>str</code>.</li>
  </ul>
  <figure id="7amc" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/459/b3a/a0c/459b3aa0c1dea5160dd10d725c5655ae.png" width="1450" />
  </figure>
  <h3 id="PD4L">Методы изменяющие строки</h3>
  <p id="pjGC"><strong>Помните!</strong> При работе со строками в Python также важно понимать, что строки являются <em>неизменяемыми</em> (<em>immutable</em>) объектами. Это означает, что каждый раз, когда вы изменяете строку, создается новый объект строки.</p>
  <p id="TnL3">Эти методы изменяют строки различными способами:</p>
  <ul id="xMgN">
    <li id="85FD"><code>lower()</code>: Преобразует все буквы в строке в строчные.</li>
    <li id="Lewf"><code>upper()</code>: Преобразует все буквы в строке в заглавные.</li>
    <li id="5IcL"><code>title()</code>: Преобразует первую букву каждого слова в строке в заглавную.</li>
    <li id="tdzg"><code>rjust(width)</code>: Выравнивает строку по правому краю в поле заданной ширины.</li>
    <li id="fxpg"><code>ljust(width)</code>: Выравнивает строку по левому краю в поле заданной ширины.</li>
    <li id="h78i"><code>center(width)</code>: Центрирует строку в поле заданной ширины.</li>
    <li id="q0H9"><code>capitalize()</code>: Преобразует первую букву строки в заглавную.</li>
    <li id="SNjc"><code>strip()</code>: Удаляет пробельные символы с обоих концов строки.</li>
    <li id="dNUR"><code>lstrip()</code>: Удаляет пробельные символы с левого конца строки.</li>
    <li id="hRXs"><code>rstrip()</code>: Удаляет пробельные символы с правого конца строки.</li>
    <li id="SjNM"><code>replace(old, new)</code>: Заменяет все вхождения подстроки <code>old</code> на подстроку <code>new</code>.</li>
    <li id="3ZrF"><code>split()</code>: Разбивает строку на список подстрок.</li>
    <li id="1anu"><code>partition(sep)</code>: Разбивает строку на кортеж, содержащий часть перед разделителем, сам разделитель и часть после разделителя.</li>
    <li id="c0QG"><code>join(iterable)</code>: Объединяет элементы итерируемого объекта в строку с разделителем.</li>
    <li id="F1xF"><code>swapcase()</code>: Преобразует заглавные буквы в строчные и наоборот.</li>
  </ul>
  <figure id="OnXn" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/6ac/bf6/a06/6acbf6a06defd6e71bec7135053c21cd.png" width="1202" />
  </figure>
  <h3 id="FFIN">Методы для поиска подстрок</h3>
  <p id="Bals">Эти методы помогают находить подстроки в строках:</p>
  <ul id="bDHR">
    <li id="6L00"><code>find(sub)</code>: Возвращает индекс первого вхождения подстроки <code>sub</code>.</li>
    <li id="U2VF"><code>rfind(sub)</code>: Возвращает индекс последнего вхождения подстроки <code>sub</code>.</li>
    <li id="5Ngh"><code>index(sub)</code>: Возвращает индекс первого вхождения подстроки <code>sub</code>, но вызывает исключение, если подстрока не найдена.</li>
    <li id="GzOD"><code>rindex(sub)</code>: Возвращает индекс последнего вхождения подстроки <code>sub</code>, но вызывает исключение, если подстрока не найдена.</li>
    <li id="rsk9"><code>count(sub)</code>: Возвращает количество вхождений подстроки <code>sub</code>.</li>
  </ul>
  <figure id="dTFO" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/f57/cc6/4b6/f57cc64b6daddd6aa0f322e19f9f043e.png" width="988" />
  </figure>
  <h3 id="BbHv">ASCII методы</h3>
  <p id="F56l">Эти методы работают с ASCII символами:</p>
  <ul id="t2c1">
    <li id="LZQ6"><code>ord(char)</code>: Возвращает ASCII-код символа.</li>
    <li id="rTOi"><code>chr(code)</code>: Возвращает символ по его ASCII-коду.</li>
  </ul>
  <h3 id="FKjx">Основные методы</h3>
  <p id="sYJ2">Здесь я выделил основные методы, которые точно пригодятся вам в дальнейшем. Однако в некоторых из них, используются типы данных, которые мы ещё не проходили. Не переживайте, в дальнейшем мы ещё вернемся к ним и разберем более подробнее)</p>
  <ul id="8QLA">
    <li id="0Rbg">Подсчёт элементов в строке: <code>String.count(sub[, start[, end]])</code>Возвращает число повторений подстроки sub в строке String. Два необязательных аргумента:</li>
    <ul id="BPKM">
      <li id="iQ3n"><code>start</code> — индекс, с которого начинается поиск;</li>
      <li id="XPQp"><code>end</code> — индекс, которым заканчивается поиск.</li>
    </ul>
  </ul>
  <figure id="uUXP" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/646/98a/256/64698a256112ddeddc3c97daf3249086.png" width="1194" />
  </figure>
  <ul id="91Ac">
    <li id="tZqY">Следующий метод: <code>String.find(sub[, start[, end]])</code>Возвращает индекс первого найденного вхождения подстроки <code>sub</code> в строке <code>String</code>. А аргументы <code>start</code> и <code>end</code> работают также как и в методе <code>count</code>. Если подстрока не найдена, метод возвращает <code>-1</code>.</li>
  </ul>
  <figure id="0JA9" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/6a5/813/143/6a5813143df880b80b3b84f9d2dfb36b.png" width="1194" />
  </figure>
  <ul id="mPeV">
    <li id="9QSn">Третий метод, аналогичный find – это: <code>String.index(sub[, start[, end]])</code>Он работает абсолютно также как find, но с одним отличием: если указанная подстрока sub не находится в строке String, то метод приводит к ошибке.</li>
    <li id="Llb0">Спрашивается: зачем нужен такой ущербный метод index?</li>
    <li id="pi72">В действительности такие ошибки можно обрабатывать как исключения и это бывает полезно для сохранения архитектуры программы, когда неожиданные ситуации обрабатываются единым образом в блоке исключений.</li>
    <li id="sa3y">Следующий метод: <code>String.replace(old, new, count=-1) </code>Метод <code>replace</code> заменяет все вхождения подстроки <code>old</code> на подстроку <code>new</code> и возвращает новую строку. Аргумент <code>count</code> указывает, сколько замен должно быть выполнено. Значение <code>-1</code> означает, что замены не ограничены.</li>
  </ul>
  <figure id="zTWt" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/766/777/e88/766777e8846be161253854ac0f487c4e.png" width="1194" />
  </figure>
  <ul id="rrfm">
    <li id="fplI">Следующий метод: <code>String.split(sep=None, maxsplit=-1)</code>Метод <code>split</code> возвращает список строк, полученных путем разделения исходной строки <code>String</code> по указанному разделителю <code>sep</code>.</li>
  </ul>
  <figure id="01Vx" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/1ea/497/c6f/1ea497c6fc9dede85c0e6990cbf4ed8f.png" width="1290" />
  </figure>
  <ul id="vuo2">
    <li id="Ajvf">Обратный метод: <code>String.join(список)</code>Возвращает строку из объединенных элементов списка, между которыми будет разделитель String.</li>
  </ul>
  <figure id="dyN7" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/80d/ad1/fbf/80dad1fbfa9ec1b62b4a57cf58642c76.png" width="1290" />
  </figure>
  <ul id="1SgD">
    <li id="quGl">Следующий метод <code>String.strip()</code>Удаляет пробелы и переносы строк в начале и конце строки.</li>
  </ul>
  <figure id="cHnV" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/e2a/aca/41e/e2aaca41e044df64ec44c2c1ae33be50.png" width="1290" />
  </figure>
  <p id="l0Ly">Данная статья получилась больше, как пересказ документации Python. Однако это не отрицает необходимости получения этих знаний. Если у вас остались вопросы или вы хотите больше примеров по конкретному методу — напишите в комментариях под постом и я обязательно дополню эту статью.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@python_jungle/QSs2UCzZCOI</guid><link>https://teletype.in/@python_jungle/QSs2UCzZCOI?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle</link><comments>https://teletype.in/@python_jungle/QSs2UCzZCOI?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle#comments</comments><dc:creator>python_jungle</dc:creator><title>Строки и операции над ними</title><pubDate>Sat, 13 Jul 2024 10:33:02 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/e9/23/e923fa92-dfd2-4061-a1ca-01362d8fe3ee.png"></media:content><category>python</category><description><![CDATA[<img src="https://img3.teletype.in/files/2f/a7/2fa7b71d-9ec1-4f8c-b7fa-439cf733bc97.jpeg"></img>Вот и пришло время познакомиться со строковым типом данных. Это один из самых часто встречающихся типов данных. Он используется для хранения символьной информации: букв, чисел, знаков препинания и прочих символов.]]></description><content:encoded><![CDATA[
  <h1 id="GoOq">Строки и операции над ними</h1>
  <p id="tr55">Вот и пришло время познакомиться со строковым типом данных. Это один из самых часто встречающихся типов данных. Он используется для хранения символьной информации: букв, чисел, знаков препинания и прочих символов.</p>
  <p id="o6Dq">В этой статье мы разберемся с тем, что из себя представляет этот тип данных, как с ним работать и познакомимся с понятием индексов и срезов.</p>
  <h3 id="Jnpl">Что такое строки и какие их виды существуют</h3>
  <p id="1HoG"><strong>Строковый тип данных</strong> — это последовательности символов Unicode любой длины, заключённые в одинарные, двойные или тройные кавычки. Символами могут быть буквы, числа, знаки препинания, специальные символы и много подобного.</p>
  <p id="ErhZ"><strong>Главное условие строк</strong> - это необходимость в том, чтобы с двух сторон их окружали одинаковые кавычки.</p>
  <p id="3jNp">В Python строки обозначаются, как <code>str</code> (сокращение от английского слова string - строка).</p>
  <p id="vQ5m"><strong>Виды строк:</strong></p>
  <ol id="Zhll">
    <li id="zl6Z"><strong>Однострочные строки</strong> - это строки, которые записываются в одну строку и окружаются с двух сторон одинарными или двойными кавычками.</li>
  </ol>
  <pre id="2OIZ">Hello, world!
Hello, world!</pre>
  <p id="w7HC">Как видно из примеров, выбор типа кавычек (одинарных или двойных) не влияет на вывод строки.</p>
  <p id="FsoM">Зачем же нужны два вида кавычек? Основная причина заключается в том, что вы можете создавать строки, содержащие кавычки. Например, внутри одинарных кавычек можно использовать двойные и наоборот:</p>
  <figure id="nJTa" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/54a/e2c/593/54ae2c59328e7ba0479f95f86b0774bd.png" width="1248" />
  </figure>
  <p id="4gia">Когда мы попытаемся выполнить нашу программу, всё отработает корректно:</p>
  <pre id="wOC4">Приезжаю завтра, остановлюсь в гостинице &quot;Москва&quot;
It&#x27;s not an apostrophe — it&#x27;s a catastrophe!</pre>
  <p id="jrQF">Если же выбрать неправильные кавычки, это приведет к ошибке синтаксиса:</p>
  <figure id="u6cY" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/7ed/47a/43e/7ed47a43e3304e9ef8fb443b9f443d7c.png" width="1248" />
  </figure>
  <pre id="YVWZ">  File &quot;c:\Users\Python\tuition\test.py&quot;, line 2
    example2 = &#x27;It&#x27;s not an apostrophe — it&#x27;s a catastrophe!&#x27;
                                       ^
SyntaxError: invalid character &#x27;—&#x27; (U+2014)</pre>
  <ol id="ObLt">
    <li id="fD3x"><strong>Многострочные строки</strong> - они отличаются от обычных тем, что позволяют нам писать текст на нескольких строках сразу. Для обрамления таких строк используются три одинарные или три двойные кавычки. Какие конкретно кавычки вы будете при этом использовать не будет играть вообще никакой роли.</li>
  </ol>
  <pre id="pGcc">Идем сегодня мы пораньше,
Чтобы не &#x27;быть&#x27; опаздунами.
Мы так намерены и &quot;дальше&quot;,
Чтоб было счастье между нами.</pre>
  <p id="Itjj">Как видно из примера, текст действительно находится на разных строках, и более того - внутри мы использовали кавычки и это не вызвало у нас никаких ошибок!</p>
  <p id="xOOO">Отлично, с этим разобрались! Давайте перейдём к следующему пункту.</p>
  <h3 id="HTG4">Операции над строками</h3>
  <p id="LWiR">В Python вы можете выполнять арифметические операции не только с числами, но и со строками. Рассмотрим две основные операции: <strong>сложение (конкатенация)</strong> и <strong>умножение (повторение)</strong>.</p>
  <h4 id="9e3F">Сложение (конкатенация)</h4>
  <p id="4FJa">В Python мы действительно можем складывать строки и эта операция называется - конкатенацией.</p>
  <figure id="czyR" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/a6e/80f/e71/a6e80fe7127fc2987c9b4495bc96543e.png" width="942" />
  </figure>
  <pre id="UYjX">HelloWorld!</pre>
  <p id="RKWX">Как видно из примера, две строки &quot;Hello&quot; и &quot;World!&quot; были объединены в одну строку &quot;HelloWorld!&quot;. Однако этот результат может показаться недостаточно читаемым из-за отсутствия пробела между словами.</p>
  <p id="YZ7u">Давайте добавим пробел между строками:</p>
  <figure id="I3S0" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/288/03c/346/28803c3467e02d0da69342e5545a41e0.png" width="1034" />
  </figure>
  <pre id="8ZL5">Hello World!</pre>
  <p id="NtPw">Теперь результат выглядит более естественно и читаемо. Помните, что при конкатенации строк они соединяются в том порядке, в котором вы их передаёте.</p>
  <h4 id="ulq8">Повторение строк</h4>
  <p id="NY51">Теперь, когда мы разобрались с операцией сложения, перейдём к умножению! Мы будем называть эту операцию <strong>повторением</strong> или <strong>дублированием строк</strong>, и вот почему:</p>
  <figure id="Osdy" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/8f8/29a/5bc/8f829a5bcfd8bdecd6ccd1b64a442f90.png" width="834" />
  </figure>
  <pre id="nZAS">HelloHelloHelloHelloHello</pre>
  <p id="W7bm">При выполнении операции умножения строка повторяется указанное количество раз. В данном случае строка «Hello» умножается на 5, что приводит к её повторению пять раз</p>
  <p id="psPt"><strong>Важный момент! Строку можно умножать на число, но нельзя умножать строку на строку — это приведёт к ошибке!</strong></p>
  <h3 id="rqxC">Индексы и срезы</h3>
  <p id="pWuS">Сейчас поговорим, о важной теме, которая будет очень часто применяться в будущем - индексы и срезы.</p>
  <h3 id="Ne93">Индексы</h3>
  <p id="iAVk">Мы уже говорили, что строки - это упорядоченные наборы символов (последовательности).</p>
  <p id="op9v">Давайте создадим переменную строкового типа:</p>
  <figure id="zC4S" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/49a/699/edd/49a699edd7a7edc260b81a27b63bf6bc.png" width="860" />
  </figure>
  <p id="txD8">и подробнее рассмотрим как она устроена:</p>
  <figure id="nE5m" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/bfa/70a/d9d/bfa70ad9d14a42c7edb5d1b936afb270.png" width="871" />
  </figure>
  <p id="LGv3">Смотрите, каждый символ строки имеет свой уникальный, порядковый номер. Эти номера называются <strong>индексами</strong>. Первый – 0, второй – 1 и так до конца. Мы можем использовать эти индексы для обращения к отдельному символу строки. Для этого, записывается имя переменной и в квадратных скобках указывается номер символа:</p>
  <figure id="qmn0" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/bfc/eec/c15/bfceecc15c4f76d3681b7286849767b1.png" width="860" />
  </figure>
  <pre id="1eAc">H
l</pre>
  <p id="wEup"><strong>Однако вам стоит быть внимательнее, если при обращении вы укажите не существующий индекс, то это приведёт к возникновению ошибки!</strong></p>
  <p id="3QES"><strong>Важно!</strong> Нумерация индексов в Python начинается с 0, если мы читаем слева на право и с -1, если мы читаем в обратном порядке. Таким образом у каждого символа в строке, есть два индекса - положительный и отрицательный.</p>
  <p id="gqwc">Так, к первому элементу нашей строки мы можем обратиться несколькими способами:</p>
  <pre id="muEM">example[0]
#или
example[-13]</pre>
  <p id="5OyZ">Не отходя от кассы, расскажу вам про одну полезную функцию, которая может вам пригодиться:<br /> <code>len()</code> - <strong>это функция, возвращающая длину строки, которую мы передаём в качестве параметра.</strong></p>
  <figure id="azKl" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/c26/c1f/2b1/c26c1f2b14126877f4a414a8faafa5b3.png" width="1162" />
  </figure>
  <pre id="o4sU">13
17
5
1
0</pre>
  <h3 id="23DJ">Срезы</h3>
  <p id="U2gl">Отлично, теперь мы знаем, что такое индексы и как обращаться, к отдельным элементам строки. Но что, если нам нужно выбрать не один символ из строки, а несколько? Для этого нам и понадобятся <strong>срезы</strong>!</p>
  <p id="110Y">Фактически, когда мы выполняем индексацию, то возвращается новая строка из одного выделенного символа. Но мы можем выделять и сразу несколько символов, используя следующий синтаксис:</p>
  <pre id="iYY1">строка(start:stop:step)</pre>
  <p id="nrXC">где,</p>
  <ul id="p2Uj">
    <li id="WNad"><code>start</code> - индекс, с которого мы начнём выбирать символы из строки.</li>
    <li id="EkG2"><code>stop</code> - индекс (не включительно), на котором у нас закончится выбор.</li>
    <li id="NeYO"><code>step</code> - шаг выбора символов (каждый, через один, через два и т.д)</li>
  </ul>
  <p id="EYQ2">Выделенная последовательность символов называется <strong>срезом строки</strong>.</p>
  <p id="7LP5">Посмотрим на примере:</p>
  <figure id="rYik" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/56b/b7f/418/56bb7f4183da8e15c0aa2b50f9b6a521.png" width="1162" />
  </figure>
  <pre id="gFOa">1234
0123456789
01234
02468</pre>
  <p id="Wtz7"><strong>Разберемся:</strong></p>
  <ul id="rNdt">
    <li id="CoNT">В первом выводе, мы выбрали все символы, индексы которых начинаются с 1 и заканчиваются 4. Конкретное значение параметра <code>stop</code> - не учитывается, при срезе. По этой причине мы не взяли символ с индексом 5.</li>
    <li id="20fH">Во втором выводе, мы вообще не указывали параметры для среза, что привело к выводу всей строки. Это аналогичная форма записи вывода <code>print(example)</code></li>
    <li id="4STj">В третьем выводе мы не указали начальный параметр <code>start</code>, но указали конечный - <code>stop</code>. Следовательно символы вывелись с начала строки и до указанного (не включительно).</li>
    <li id="zIzj">В четвёртом выводе, мы не указывали параметры <code>start</code> и <code>stop</code>, но указали параметр <code>step = 2</code> - это привело к тому, что мы выбрали из строки все символы с чётными индексами.</li>
  </ul>
  <h3 id="3EoE">Изменение строк</h3>
  <p id="BNtL">При работе со строками в Python следует помнить, что строки являются неизменяемыми объектами. Это означает, что вы не можете изменить существующую строку напрямую.</p>
  <p id="3mOw">Например, попытка изменить первый символ строки таким образом:</p>
  <pre id="2unE">example[0] = &#x27;h&#x27;</pre>
  <p id="cFBE">вызовет ошибку.</p>
  <p id="ZDiN">Для изменения строки необходимо создать новую строку с желаемым содержимым. Например, чтобы заменить первый символ строки <code>s</code> на &#x27;h&#x27;, можно использовать следующий код:</p>
  <pre id="x0tA">example = &#x27;h&#x27; + s[1:]</pre>
  <p id="ATfz">Этот подход применяется всякий раз, когда требуется внести изменения в существующую строку.</p>
  <p id="HQ1j"><strong>Примечание.</strong> Если вам не понятно, почему строки ведут себя именно таким образом. Вам следует прочитать нашу статью - <a href="https://teletype.in/@python_jungle/om5D_2cQ8iv" target="_blank">&quot;Изменяемые и неизменяемые типы данных&quot;</a>.</p>
  <h3 id="iFts">Что необходимо запомнить из этой статьи:</h3>
  <ol id="JKnc">
    <li id="uljD">Строка – упорядоченный набор символов (последовательность);</li>
    <li id="gqIc">Как работает сложение строк (конкатенация) и умножение строк (повторение);</li>
    <li id="voFm">У каждого символа в строке, есть свой порядковый номер - называемый индексом;</li>
    <li id="gpP9">Индексация строк начинается с <code>0</code>, но если вы читаете строку в обратном порядке, то с <code>-1</code>;</li>
    <li id="D5T6">Мы можем обращаться к конкретному символу строки, при помощи её индекса - <code>example[0]</code>. В тоже время, мы можем выбрать сразу несколько символов, используя срезы - <code>example[1:5:2]</code>.</li>
  </ol>
  <p id="ce4P">Ещё больше статьей для начинающих и не только, вы можете прочитать в нашем телеграмм канале <a href="https://t.me/python_jungle" target="_blank">Python Jungle</a>.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@python_jungle/om5D_2cQ8iv</guid><link>https://teletype.in/@python_jungle/om5D_2cQ8iv?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle</link><comments>https://teletype.in/@python_jungle/om5D_2cQ8iv?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle#comments</comments><dc:creator>python_jungle</dc:creator><title>Изменяемые и не изменяемые типы данных</title><pubDate>Thu, 11 Jul 2024 15:00:06 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/ba/70/ba7098da-a651-4254-807b-5568a15ba936.png"></media:content><category>python</category><description><![CDATA[<img src="https://img3.teletype.in/files/26/4e/264e06b9-e436-44ea-aab6-078c86f21853.jpeg"></img>Привет всем! В этой небольшой статье мы рассмотрим понятия &quot;изменяемости&quot; и &quot;неизменяемости&quot; данных в Python.]]></description><content:encoded><![CDATA[
  <p id="WN1q">Привет всем! В этой небольшой статье мы рассмотрим понятия &quot;изменяемости&quot; и &quot;неизменяемости&quot; данных в Python.</p>
  <p id="BrJY">Изначально стоит сказать о том, что объектом в Python является абсолютно все, а каждый объект относится к какому-либо типу данных. Новичкам важно сразу усвоить, что все типы данных в Python могут быть либо изменяемыми (mutable), либо неизменяемыми (immutable).</p>
  <figure id="u4mO" class="m_column">
    <img src="https://img3.teletype.in/files/26/4e/264e06b9-e436-44ea-aab6-078c86f21853.jpeg" width="1500" />
  </figure>
  <p id="GvJK">Прежде, чем мы перейдём к более подробному изучению, давайте вспомним атрибуты объектов:</p>
  <ul id="2ftw">
    <li id="gWHK"><strong>id</strong>: адрес в памяти, на который ссылается данный объект</li>
    <li id="xwbs"><strong>тип</strong>: тип создаваемого объекта. Например, целое число, список, строка и т. д.</li>
    <li id="0ZJC"><strong>значение</strong>: значение, которое хранится в данном объекте.</li>
  </ul>
  <p id="aqzb">После создания объекта его идентификатор и тип изменить нельзя, а вот значение в изменяемых объектах может быть изменено.</p>
  <h4 id="AaWV">Неизменяемые объекты (Immutable)</h4>
  <p id="SkfO">Неизменяемые объекты не могут быть изменены после их создания. Когда мы присваиваем новое значение неизменяемому объекту, Python не перезаписывает его, а создаёт новый объект с тем же именем.</p>
  <p id="Smz8">Для проверки такого поведения, мы можем воспользоваться функцией <code>id</code> - она возвращает уникальный номер, который присваивается переменной при создании.</p>
  <figure id="29kQ" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/65b/dc0/80b/65bdc080b5091440deb5f91c05eb0dc9.png" width="1248" />
  </figure>
  <pre id="OJDB">I am 25 years old. id my_age = 140703593987256
I am 26 years old. id my_age = 140703593987288
</pre>
  <p id="NpSa">Когда мы прибавляем год к нашему возрасту (переменной my_age), на его месте создаётся новый объект с тем же именем. Мы можем это понят, так как до прибавления года id переменной <code>my_age = 140703593987256</code>, а после id <code>my_age = 140703593987288</code>.</p>
  <p id="T7eS">Давайте попробуем изменить неизменяемый тип данных и посмотрим на результат:</p>
  <figure id="7Kzs" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/08d/dd1/a32/08ddd1a32ca71da36a18efcb7aa0e960.png" width="1248" />
  </figure>
  <pre id="nEPr">    names[0] = &quot;Python&quot;
    ~~~~~^^^
TypeError: &#x27;tuple&#x27; object does not support item assignment
</pre>
  <p id="pgpD">Когда мы попытаемся изменить элемент кортежа (tuple) в Python, мы столкнемся с ошибкой, которая указывает на то, что объект типа &#x27;tuple&#x27; не поддерживает присваивание элементов. Это произошло потому, что мы попытались изменить неизменяемый тип данных :)</p>
  <p id="Kpov"><strong>Давайте ещё раз взглянем на неизменяемые типы данных:</strong></p>
  <figure id="SGtw" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/5c7/705/166/5c7705166405fa699b1dc1248ca61152.png" width="1248" />
  </figure>
  <p id="aSCZ">Я хотел бы дать вам интересное задание, чтобы вы немного больше узнали, об этом виде типов данных.</p>
  <p id="u26N"><strong>Задание:</strong> создайте неизменяемый тип данных (например кортеж) и поместите в него изменяемый тип данных. Что произойдёт? Сможем ли мы изменить изменяемый тип данных внутри неизменяемого?</p>
  <h4 id="qtWH">Изменяемые объекты (Mutable)</h4>
  <p id="mTGo">Изменяемые объекты могут быть изменены после их создания. Рассмотрим на примере:</p>
  <figure id="w9Dk" class="m_column">
    <img src="https://habrastorage.org/getpro/habr/upload_files/9b6/bbc/4fe/9b6bbc4fe2690b5cda6dc6cb3c678f95.png" width="1248" />
  </figure>
  <pre id="HskF">1877224118528
1877224118528
</pre>
  <p id="DeUP">Из вывода программы мы можем понять, что адрес списка в памяти компьютера не изменился после добавления нового имени, что свидетельствует о том, что мы продолжаем работать с тем же самым объектом, а не создали новый. Это происходит потому, что список в Python действительно является изменяемым (mutable) типом данных.</p>
  <h4 id="ZJcU">Важность понимания изменяемости</h4>
  <p id="6J3m">Для новичков в программировании важно понимать разницу между изменяемыми и неизменяемыми типами данных в Python, так как это влияет на то, как вы будете работать с данными и как они будут храниться в памяти. Вот основные моменты, которые стоит запомнить:</p>
  <ol id="cH61">
    <li id="l8ej"><strong>Неизменяемые типы данных</strong> (например, строки, числа, кортежи) не могут быть изменены после их создания. Это означает, что любая операция, которая кажется изменением, на самом деле создает новый объект. Это обеспечивает целостность данных и избавляет нас от возможных ошибок.</li>
    <li id="Z0GB"><strong>Изменяемые типы данных</strong> (например, списки, словари, множества) могут быть изменены после их создания. Вы можете добавлять, удалять или изменять элементы этих объектов. Однако, это также означает, что вы должны быть осторожны, чтобы не изменить объект непреднамеренно, особенно когда он передается в функции или используется в качестве значения в словарях.</li>
  </ol>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@python_jungle/uK54CpCfVa-</guid><link>https://teletype.in/@python_jungle/uK54CpCfVa-?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle</link><comments>https://teletype.in/@python_jungle/uK54CpCfVa-?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle#comments</comments><dc:creator>python_jungle</dc:creator><title>Числовые типы данных и операции над ними</title><pubDate>Mon, 08 Jul 2024 13:03:55 GMT</pubDate><description><![CDATA[В этой статье мы поговорим о числовых типах данных, арифметических операциях над ними и поймём как работает присваивание.]]></description><content:encoded><![CDATA[
  <h3 id="Dz6n">Введение</h3>
  <p id="dOtX">В этой статье мы поговорим о числовых типах данных, арифметических операциях над ними и поймём как работает присваивание.</p>
  <p id="XT2l">В python имеются три базовых типа для представления чисел:</p>
  <ol id="2VvW">
    <li id="RO9u"><code>int</code> – для целочисленных значений;</li>
    <li id="8DDv"><code>float</code> – для вещественных;</li>
    <li id="nTAR"><code>complex</code> – для комплексных.</li>
  </ol>
  <p id="5GxX">Мы затронем первые два: <code>int</code> и <code>float</code>. Поскольку комплексные числа редко встречаются на практике и этот тип мы рассмотрим отдельно.</p>
  <p id="6Z8X">Первый <em>целочисленный</em> тип представляет собой, следующие числа:<br /> <code>0, 1, 2, 100, 6697959484, -1, -2, -7567658</code></p>
  <p id="0DXR">Python поддерживает работу с очень большими числами, поэтому у вас, скорее всего не возникнет проблем с выходом за пределы диапазона.</p>
  <p id="xzy1"><em>Вещественные числа</em>, то есть, дробные записываются через точку, например, так:<br /> <code>6.8, -5.567, 345.546, -65467.99</code></p>
  <p id="v1dq">Здесь также довольно широкий диапазон значений, достаточный для большинства практических задач. Пока такого понимания чисел будет вполне достаточно.</p>
  <h3 id="meDN">Оператор присваивания</h3>
  <p id="hDKM">Отлично! Теперь вы знаете, какие типы чисел есть в Python. Давайте рассмотрим способ, как мы можем зафиксировать значение за определенной переменной. Для этого нам понадобится <strong>оператор присваивания</strong> =.</p>
  <p id="UyPX">Разберем, как работает оператор присваивания на примере:</p>
  <pre id="oVL6" data-lang="python">age = 21</pre>
  <p id="pbgI">В этом примере мы создали переменную age и присвоили ей значение 21.</p>
  <p id="We9W">Получается, что оператор присваиванию говорит компьютеру: &quot;Смотри у нас есть именованная коробочка <code>age</code>, давай положим в неё значение <code>21</code>&quot;.</p>
  <p id="K1hv">Вот так вот, ничего сложного ^.^</p>
  <h3 id="Zawc">Основные арифметические операции</h3>
  <p id="KJdM">Следующим шагом, нам с вами нужно научиться делать арифметические операции над ними. Что это за операции? Базовыми из них являются, следующие:</p>
  <figure id="uWVk" class="m_original">
    <img src="https://img1.teletype.in/files/07/4d/074dfaa9-70b8-4d73-b205-e489e77dbb37.png" width="393" />
  </figure>
  <p id="1ilf">Как вы могли заметить, приоритет у этих операций такой же, как и в обычной математике. Единственное, что я бы хотел тут уточнить, так это то, что мы можем менять приоритет операций при помощи скобочек <code>()</code>. Всё, как в школьной математике! Кстати её уровня будет достаточно для решения большинства возникающих задач.</p>
  <p id="D0Cu">Некоторые из операций могут быть вам незнакомы. Давайте, я поясню их работу на конкретных примерах:</p>
  <h4 id="BwPZ">Сложение, вычитание и умножение</h4>
  <p id="2OcH"><strong>Пример:</strong></p>
  <pre id="BANT" data-lang="python">a = 10
b = 13
print(a+b)</pre>
  <p id="tIFO"><strong>Выведет:</strong> <code>23</code></p>
  <p id="lOyZ"><strong>Примечание.</strong> Мы можем складывать много переменных/чисел за один раз: <code>a+b+10+5.0</code></p>
  <p id="yfuJ">Давайте рассмотрим ещё один пример сложения:</p>
  <p id="EyqU"><strong>Пример:</strong></p>
  <pre id="6caI" data-lang="python">a = 10
b = 5.5
print(a+b)
c = 10
d = 10.0
print(c+d)</pre>
  <p id="eMwC"><strong>Выведет:</strong></p>
  <pre id="vWTV" data-lang="python">15.5
20.0</pre>
  <p id="smwR">Заметили что произошло? <em>При сложении целочисленного типа с дробным, вы всегда будете получать дробное число. Аналогично будет работать с вычитанием и умножением.</em></p>
  <p id="9Nnh"><strong>Пример умножения:</strong></p>
  <pre id="YOrK" data-lang="python">a = 5
b = 3
print(a*b)
a = 2.5
b = 2
print(a*b)</pre>
  <p id="tqoR"><strong>Выведет:</strong></p>
  <pre id="cHY8" data-lang="python">15
5.0</pre>
  <p id="WOMt">Надеюсь, что здесь результат уже для всех был очевидным изначально.</p>
  <h4 id="WIEo">Деление</h4>
  <p id="coH7">А вот деление отличается довольно сильно и как вы могли заметить в Python их 3!</p>
  <p id="2KZp"><strong>Пример классического деления:</strong></p>
  <pre id="d4nF" data-lang="python">a = 10
b = 3
c = 2
print(a/b)
print(a/c)</pre>
  <p id="D5j7"><strong>Выведет:</strong></p>
  <pre id="ytnt" data-lang="python">3.3333333333333335
5.0</pre>
  <p id="U5n6">Теперь давайте обсудим результат, который у нас получился. При делении 10 на 3, мы получили 3.3333333333333335. Только вот откуда там взялась 5?</p>
  <p id="ZWZs">Это не ошибка Python, а лишь аппаратное ограничение. Оказывается, что числа с плавающей точкой в памяти компьютера реализованы с помощью двоичных дробей — компьютер понимает только их (0 и 1). Именно поэтому большинство десятичных дробей невозможно со всей точностью хранить в памяти компьютера.</p>
  <p id="QOst"><strong>Приведем пример.</strong> Мы не можем представить дробь 2/3 в виде десятичного числа. 2/3 = 0.6666666666666666... цифра 6 будет повторяться бесконечно. Поэтому хранить можно лишь приблизительное значение этого числа.</p>
  <p id="6uvx"><strong>В Python точность чисел с плавающей точкой обеспечивается только до 15 знака, на 16 могут возникать неточности.</strong></p>
  <p id="RQku"><strong>Важно!</strong> При классическом делении всегда получается вещественное (дробное) число, независимо от входных данных.</p>
  <p id="9RTf"><strong>Давайте рассмотрим ещё один пример такого поведения:</strong></p>
  <pre id="JIYS" data-lang="python">print(1.1+2.2)</pre>
  <p id="jLgX"><strong>Выведет:</strong> <code>3.3000000000000003</code></p>
  <p id="GAOQ">Для решения этой проблемы вы можете воспользоваться функцией округления чисел <code>round</code>.</p>
  <p id="GVRo">Её синтаксис <code>round(number, ndigits)</code>, где</p>
  <ul id="mOSC">
    <li id="J3kR"><strong>number</strong> - это число или выражение, которое мы хотим округлить</li>
    <li id="Eo8T"><strong>ndigits</strong> - число цифр, после запятой</li>
  </ul>
  <p id="RyUB"><strong>Пример:</strong></p>
  <pre id="kO6V" data-lang="python">print(round(2/3, 2))
print(round(1.1+2.2, 2))</pre>
  <p id="Nths"><strong>Выведет:</strong></p>
  <pre id="81I7" data-lang="python">0.67
3.3 (Функция round в Python округляет число до указанного количества 
десятичных знаков, но не добавляет незначащие нули.)</pre>
  <p id="8gW9">Сейчас вам стоит просто запомнить эту конструкцию, детальнее о том как она работает и других способах решения мы поговорим позже.</p>
  <p id="bCWi"><strong>Целочисленное деление</strong></p>
  <p id="h0YM">Ещё один из видов деления, который позволяет нам находить целое число при деление. (Автоматически округляет число до наименьшего кратного). Перейдём сразу к примеру:</p>
  <p id="m8UE"><strong>Пример:</strong></p>
  <pre id="wZ0B" data-lang="python">a = 10
b = 5
print(a//b)
print(b//a)
c = 10
d = 3
print(c//d)</pre>
  <p id="cGH0"><strong>Выведет:</strong> </p>
  <pre id="nSam" data-lang="python">2 (на выходе получаем 2, поскольку 2 ближайшее наименьшее целое число к 2.0)
0 (на выходе получаем 0, поскольку 0 ближайшее наименьшее целое число к 0.5)
3 (на выходе получаем 3, поскольку 3 ближайшее наименьшее целое число 
к 3.(3))</pre>
  <p id="rZLO"><strong>Примечание:</strong> 3.(3) - это сокращенная запись числа 3.3333333333...</p>
  <p id="j0GM">Рассмотрим целочисленное деление отрицательных чисел.</p>
  <p id="vMrS"><strong>Пример:</strong></p>
  <pre id="cz9u" data-lang="python">c = -7 // 2
print(c)</pre>
  <p id="imoM"><strong>Выведет:</strong></p>
  <pre id="XOkT" data-lang="python">-4 (На выходе получили -4, поскольку -4 ближайшее наименьшее целое 
число к -3.5)</pre>
  <p id="Ynao">Теперь рассмотрим операцию <strong>нахождения остатка при делении.</strong></p>
  <p id="kmlc"><strong>Что это вообще такое?</strong> Например, если делить <code>10/3</code> то остаток будет равен 1.</p>
  <p id="YxJD"><strong>Почему так?</strong> Все просто, число 3 трижды входит в число 10 и остается значение 10 - 3∙3 = 1.</p>
  <p id="bfDX">Для вычисления этого значения в Python используется оператор <code>%</code>.</p>
  <p id="gIbK"><strong>Пример:</strong></p>
  <pre id="3Tup" data-lang="python">a = 10
b = 3
print(a % b)
print(a % 4)
print(a % 10)
print(a % 5)</pre>
  <p id="YpEH"><strong>Выведет:</strong></p>
  <pre id="qgjH" data-lang="python">1
2
0
0</pre>
  <p id="17xx">Согласитесь, удобно и просто. Если вам тяжело это понять, то попробуйте посчитать уравнения из примера на листочке ;)</p>
  <p id="NExr">Нахождение остатка от отрицательных чисел немного сложнее, я хочу посвятить этому отдельный небольшой пост.</p>
  <h4 id="2kon">Возведение в степень</h4>
  <p id="iJjY">Последняя из операций, которые нам необходимо рассмотреть - это <strong>возведение в степень</strong> (**).</p>
  <p id="Fctu"><strong>Она работает довольно просто:</strong> мы берем число и умножаем его на себя столько раз, сколько указано.</p>
  <p id="MOWC"><strong>Рассмотрим парочку примеров:</strong></p>
  <ol id="Pd9z">
    <li id="AwZR"><code>3**3 = 27 (3*3 = 9, 9*3=27)</code></li>
    <li id="amNr"><code>2**4 = 16 (2*2=4, 4*2=8, 8*2=16)</code></li>
    <li id="idKA">Ну и так далее...</li>
  </ol>
  <p id="ezwq"><strong>Давайте рассмотрим парочку более интересных примеров:</strong></p>
  <pre id="7D10" data-lang="python">print(36**0.5)
print(144**0.5)</pre>
  <p id="ydlt"><strong>Выведет:</strong></p>
  <pre id="LGUn" data-lang="python">6
12</pre>
  <p id="ebhZ">Как вы могли заметить, Python позволяет не только возводить числа в целые степени, но и в дробные. В частности, степень 0.5 используется для вычисления квадратного корня числа. Это означает, что число, возведенное в степень 0.5, даст исходное число при возведении его в квадрат.</p>
  <p id="CCUl">Таким образом, <code>36**0.5</code> вычисляет квадратный корень из 36, что равно 6, а <code>144**0.5</code> вычисляет квадратный корень из 144, что равно 12.</p>
  <p id="OJ6H"><strong>Пример:</strong></p>
  <pre id="Y4w7" data-lang="python">print(2**3**2)</pre>
  <p id="0fqF"><strong>Выведет:</strong></p>
  <pre id="BsI2" data-lang="python">512</pre>
  <p id="WtBs">В Python операции возведения в степень выполняются справа налево. Поэтому сначала вычисляется <code>3**2</code>, что равно 9, а затем <code>2**9</code>, что равно 512.</p>
  <p id="9hvK">Таким образом, <code>2**3**2</code> эквивалентно <code>2**(3**2)</code>, и результатом является 512.</p>
  <h3 id="XpIY">Что необходимо запомнить:</h3>
  <ul id="etIF">
    <li id="PJzr">В Python есть 3 числовых типа данных - <code>int</code>, <code>float</code>, <code>complex</code>.</li>
    <li id="IAwR">Для присвоения переменной значения, используется оператор присваивания =</li>
    <li id="CNZl">В Python поддерживаются все арифметические операции из школьной математики (сложение, вычитание, умножение, деление, возведение в степень)</li>
    <li id="eUf8">При выполнение операции с разными типами данных, Python автоматически преобразует тип к тому, что будет более &quot;точным&quot;. </li>
    <li id="pg6t">При классическом (обычном) делении всегда получается вещественное (дробное) число, независимо от входных данных.</li>
    <li id="NrnI">В Python точность чисел с плавающей точкой обеспечивается только до 15 знака, на 16 могут возникать неточности. Помните об этом.</li>
    <li id="Lg5E">При помощи операции возведения в степень, можно не только возводить числа в степень, но и вычислять корни.</li>
    <li id="zV9V">для округления чисел используется функция round(number, ndigits), где</li>
    <ul id="SBo3">
      <li id="wx9G"><strong>number</strong> - это число или выражение, которое мы хотим округлить</li>
      <li id="tKC2"><strong>ndigits</strong> - число цифр, после запятой </li>
    </ul>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@python_jungle/smaCp1-ihGf</guid><link>https://teletype.in/@python_jungle/smaCp1-ihGf?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle</link><comments>https://teletype.in/@python_jungle/smaCp1-ihGf?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_jungle#comments</comments><dc:creator>python_jungle</dc:creator><title>Python: ввод и вывод данных</title><pubDate>Sat, 06 Jul 2024 14:15:40 GMT</pubDate><description><![CDATA[<img src="https://img3.teletype.in/files/2f/a7/2fa7b71d-9ec1-4f8c-b7fa-439cf733bc97.jpeg"></img>В этой статье мы познакомимся с двумя встроенными функциями — print() и input(). Они нужны для вывода и ввода соответственно. Давайте начнём с вывода, поскольку с ним мы уже сталкивались ранее.]]></description><content:encoded><![CDATA[
  <h3 id="uD15">В этой статье мы познакомимся с двумя встроенными функциями — print() и input(). Они нужны для вывода и ввода соответственно. Давайте начнём с вывода, поскольку с ним мы уже сталкивались ранее.</h3>
  <h3 id="MCWM">Вывод данных, команда print</h3>
  <p id="K8cr">Для вывода данных на экран используется команда <code>print()</code>. Эти данные мы можем записать и в файл, но об этом мы поговорим позже.</p>
  <p id="Qc47">Внутри круглых скобок пишем, что хотим вывести на экран. Если это текст, то обязательно указываем его внутри кавычек. Кавычки могут быть одинарными (<code>&#x27;</code>) или двойными (<code>&quot;</code>). До и после текста мы ставим только одинаковые кавычки.</p>
  <p id="we71"><strong>Приведённый ниже код:</strong></p>
  <pre id="usOF" data-lang="python">print(&#x27;Привет мир! Я изучаю Python.&#x27;)</pre>
  <p id="0OEP"><strong>выводит:</strong></p>
  <pre id="dlQR">Привет мир! Я изучаю Python.</pre>
  <p id="vTIe">Если вы напишите этот код в VS Code, то вывод отобразится во вкладке <code>TERMINAL</code>:</p>
  <figure id="ggFV" class="m_custom">
    <img src="https://habrastorage.org/getpro/habr/upload_files/6ab/af7/3bb/6abaf73bb166b4abba14acda7d408d82.png" width="359" />
  </figure>
  <h4 id="qq6T">Использование кавычек</h4>
  <p id="mcGd">Мы можем использовать, как &#x27;одинарные&#x27; кавычки, так и &quot;двойные&quot;. Python не делает различий между одинарными и двойными кавычками: они работают одинаково для определения строк.</p>
  <p id="tZcq">Однако у вас мог возникнуть вопрос: &quot;Если мы можем использовать разные кавычки, то для чего это нужно?&quot;. Вопрос закономерный и правильный. Python использует различные кавычки для обрамления текста.</p>
  <p id="iJX3"><strong>Приведённый ниже код:</strong></p>
  <pre id="kH0Y" data-lang="python">print(&#x27;В тексте есть &quot;двойные&quot; кавычки&#x27;)
print(&quot;В тексте есть &#x27;одинарные&#x27; кавычки&quot;)</pre>
  <p id="xFNo"><strong>выводит:</strong></p>
  <pre id="TViC">В тексте есть &quot;двойные&quot; кавычки
В тексте есть &#x27;одинарные&#x27; кавычки</pre>
  <p id="cKy7">Надеюсь, что при помощи этого примера, вы поняли, для чего нам нужны разные кавычки :)</p>
  <h4 id="8gKu">Что можно выводить при помощи print?</h4>
  <p id="lPpb">На самом деле, вы можете выводить почти все встроенные типы данных поддерживаемые Python. (Совсем скоро мы с ними познакомимся , а пока давайте продолжим изучение функции print)</p>
  <p id="uWdr">То, что мы пишем в круглых скобках у команды <code>print()</code>, называется <strong>аргументами</strong>  функции.</p>
  <p id="JZkJ"><strong>Аргументы</strong> – это конкретные значения, которые вы передаете функции при ее вызове.</p>
  <p id="S7iH">Команда <code>print()</code> позволяет указывать несколько аргументов, в таком случае <strong>их надо отделять запятыми</strong>.</p>
  <p id="sJO6"><strong>Приведённый ниже код:</strong></p>
  <pre id="72kn" data-lang="python">print(&#x27;Я&#x27;, &#x27;учусь&#x27;, &#x27;программировать&#x27;, &#x27;на&#x27;, &#x27;Python!&#x27;)</pre>
  <p id="WD9E"><strong>выводит:</strong></p>
  <pre id="8imW">Я учусь программировать на Python!</pre>
  <p id="bQOQ"><strong>Обратите внимание</strong>, в качестве разделителя при выводе данных между аргументами команды используется <strong>символ пробела</strong>. По умолчанию команда <code>print()</code>  добавляет <strong>ровно один пробел</strong> между всеми своими аргументами.</p>
  <p id="yPOi"><strong>Запомни:</strong> при написании кода между аргументами команды <code>print()</code> после запятой мы ставим один символ пробел. Это общепринятое соглашение в языке Python. Этот символ пробела не влияет на вывод данных. Делается это <strong>для повышения читабельности кода</strong>.</p>
  <p id="J4RM">Если вы напишите две команды <code>print()</code>, друг за другом. То каждый текст, выводимый этими командами будет начинаться с <em>новой строки</em>.</p>
  <p id="fuWo"><strong>Рассмотрим на примере:</strong></p>
  <pre id="Ka69" data-lang="python">print(&quot;Здесь, я напишу первый текст&quot;)
print(&quot;Вот тут уже будет второй&quot;)</pre>
  <p id="5mHK"><strong>получим вывод:</strong></p>
  <pre id="6x76">Здесь, я напишу первый текст
Вот тут уже будет второй</pre>
  <p id="7Q1b">Что будет если написать <code>print</code>, без аргументов? Всё будет хорошо, Python просто вставит пустую строку вместо текста.</p>
  <p id="ewzU"><strong>Пример:</strong></p>
  <pre id="Cz4D" data-lang="python">print(&quot;Здесь, я напишу первый текст&quot;)
print()
print(&quot;Вот тут уже будет второй&quot;)</pre>
  <p id="hMov"><strong>выведет:</strong></p>
  <pre id="EJvh">Здесь, я напишу первый текст

Вот тут уже будет второй</pre>
  <h4 id="k3YX">Необязательные параметры</h4>
  <p id="kJGE">У этой функции имеется два необязательных именованных параметра, которые довольно часто используются в практике программирования:</p>
  <ul id="f7t1">
    <li id="eLoj"><code>sep</code> – разделитель между данными;</li>
    <li id="CjNs"><code>end</code> – завершающий символ или строка.</li>
  </ul>
  <p id="zY0r"><strong>Рассмотрим их применение на практике, предположим, мы выводим три переменные:</strong></p>
  <pre id="I7yd" data-lang="python">a = -6.84
b = 7
c = 25.6
print(a, b, c)</pre>
  <p id="6gGC"><strong>Вывод:</strong></p>
  <pre id="DWpk">-6.84 7 25.6</pre>
  <p id="z6aT">При выводе между каждой переменной автоматически ставится один символ пробела. Но мы можем изменить это поведение при помощи параметра <strong>sep</strong> (сокращение от английского слова separator, в переводе &quot;разделитель&quot;)</p>
  <pre id="v4SP" data-lang="python">print(a, b, c, sep=&quot; | &quot;)</pre>
  <p id="JMcy"><strong>Вывод:</strong></p>
  <pre id="8UDV">-6.84 | 7 | 25.6</pre>
  <p id="EBBN">В качестве разделителя вы можете указывать любые символы, которые вам захочется. Единственное исключение - символ обратного слеша <code>\</code>. Это один из специальных символов, о которых мы также еще будем говорить.</p>
  <p id="lVsO">Второй необязательный параметр <code>end</code>. Судя из названия и проводя аналогию с <code>sep</code>, получается, что этот параметр отвечает за окончание строки вывода.</p>
  <p id="Xe0v">По умолчанию значением этого параметра является <code>\n</code>, т.е. символ новой строки. Благодаря этому два последовательных вызова функции <code>print()</code> напечатают текст с новой строки. Пример такого поведения мы уже рассматривали выше.</p>
  <p id="SjfZ"><strong>Рассмотрим ещё раз :)</strong></p>
  <pre id="UGvY" data-lang="python">print(&quot;Здесь, я напишу первый текст&quot;)
print(&quot;Вот тут уже будет второй&quot;)</pre>
  <p id="sQgR"><strong>получим вывод:</strong></p>
  <pre id="hoBz">Здесь, я напишу первый текст
Вот тут уже будет второй</pre>
  <p id="Kg71"><strong>Теперь изменим значение end и посмотрим на результат:</strong></p>
  <pre id="le0A" data-lang="python">print(&quot;Здесь, я напишу первый текст&quot;, end=&#x27; + &#x27;)
print(&quot;Вот тут уже будет второй&quot;)</pre>
  <p id="7mIh"><strong>Результат:</strong></p>
  <pre id="HIo9">Здесь, я напишу первый текст + Вот тут уже будет второй</pre>
  <p id="Y8Nd"><strong>Заметили разницу? Отлично!</strong></p>
  <p id="s0Ou">На этом мы закончим наше базовое знакомство с функцией <code>print</code> и выводом данных на экран. Давайте же приступим к знакомству с вводом данных.</p>
  <h3 id="QcxH">Ввод данных, команда input()</h3>
  <p id="DkzG">Все предыдущие программы выводили на экран текст, известный в момент написания программного кода. Однако программы могут работать с данными, которые станут известны только во время выполнения программы. Другими словами, программы могут <strong>считывать данные</strong>, а затем их использовать.</p>
  <p id="6VCA">Для считывания данных в языке Python используется команда <code>input()</code>.</p>
  <p id="M6ah"><strong>Ее синтаксис выглядит так:</strong></p>
  <pre id="TShL" data-lang="python">input([prompt])</pre>
  <p id="03SM"><code>prompt</code> — это строка, которую мы хотим вывести на экран, когда будем запрашивать ввод с клавиатуры у пользователя.</p>
  <p id="RSLr">Рассмотрим на примере, как это работает и выполним следующий код в VS Code:</p>
  <pre id="6ESj" data-lang="python">user_name = input(&#x27;Введите ваше имя: &#x27;)
print(user_name)</pre>
  <figure id="KEwu" class="m_custom">
    <img src="https://habrastorage.org/getpro/habr/upload_files/501/aa3/2f9/501aa32f9fb7e9e5eb9991bf9e3b507a.png" width="424" />
  </figure>
  <p id="FgOl">Как вы можете заметить, сначала вывелся текст, который мы поместили внутри <code>input</code>, а после появилась возможность ввести данные с клавиатуры.</p>
  <p id="BXDs"><strong>Давайте представим следующую ситуацию:</strong> <em>Вы хотите написать программу, которая знакомилась бы с человеком, использующим её, и желала ему удачи.</em></p>
  <p id="Nq5R">Сначала нужно определиться с тем, как будет работать программа:</p>
  <ol id="PXF3">
    <li id="ewJk">Сначала нам нужно поприветствовать пользователя</li>
    <li id="Gm7Z">Узнать его имя</li>
    <li id="2q06">Пожелать удачи</li>
  </ol>
  <p id="pQd3">Отлично, только что, вы структурировали нашу задумку в техническую задачу. Вы большие молодцы! Настоящие программисты сначала обдумывают, как будет работать программа, а не пишут код в слепую! Приступим к реализации:</p>
  <ol id="56oa">
    <li id="25Ah">Поздороваемся с пользователем и узнаем имя пользователя:</li>
  </ol>
  <pre id="tPfy" data-lang="python">print(&quot;Здравствуйте, я робот Саша! Как вас зовут?&quot;)</pre>
  <ol id="v69M">
    <li id="SyiA">Запросим имя пользователя при помощи функции <code>input</code> и запишем её значение в переменную <code>name</code>:</li>
  </ol>
  <pre id="z8rh" data-lang="python">print(&quot;Здравствуйте, я робот Саша! Как вас зовут?&quot;)
name = input()</pre>
  <ol id="bWri">
    <li id="yCPz">Выведем пожелание удачи пользователю на экран, используя данные из переменной :</li>
  </ol>
  <pre id="8ifS" data-lang="python">print(&quot;Здравствуйте, я робот Саша! Как вас зовут?&quot;)
name = input()
print(&quot;Удачи в изучении языка Python&quot;, name, &quot;!&quot;)</pre>
  <p id="mxRl">Выполним этот код в VS Code и посмотрим на его выполнение:</p>
  <figure id="4NqI" class="m_custom">
    <img src="https://habrastorage.org/getpro/habr/upload_files/8ff/1cc/a7a/8ff1cca7a89279f678c6ce32bf56261a.png" width="454" />
  </figure>
  <p id="hy6x">Смотрите, программа вывела текст, а потом запросила <em>ввод из терминала</em> (Место куда указывает красная стрелочка), теперь мы можем написать своё имя, нажать на клавишу <code>Enter</code> и посмотреть на то, что получилось:</p>
  <figure id="dw8F" class="m_custom">
    <img src="https://habrastorage.org/getpro/habr/upload_files/eed/4dc/0ac/eed4dc0ac9ba85167e4363a49f467e9d.png" width="304" />
  </figure>
  <p id="o3Sf"><strong>Отлично, программа работает!</strong></p>
  <p id="DnKm"><strong>Задание:</strong> подумайте, как можно переписать программу при помощи ваших знаний о <code>prompt</code>.</p>
  <h4 id="qGuW">Что необходимо запомнить:</h4>
  <ol id="qCeT">
    <li id="RhfD">Для вывода данных на экран, используется функция <code>print()</code>, у которой есть два необязательных параметра <code>sep</code> и <code>end</code>.</li>
    <li id="FzhU">Если вы хотите вывести текст, его необходимо &quot;обернуть&quot; в кавычки. Для этого можно использовать, как одинарные, так и двойные.</li>
    <li id="2WNn">Мы можем передавать переменные в <code>print()</code>, записывая их через пробел в скобочках. Переменные разделяются друг от друга запятой, после которой должен идти символом пробела. <strong>Пример:</strong> <code>print(first_name, last_name, &#x27;!&#x27;)</code></li>
    <li id="KZ5o">Для получения данных с клавиатуры, используется функция <code>input([prompt])</code>. <code>prompt</code> - это текст, который будет выводиться перед запросом на ввод данных.</li>
  </ol>
  <p id="7i72"><strong>P.S. Больше статей вы можете посмотреть в</strong> <a href="https://t.me/python_jungle" target="_blank">нашем телеграмм канале.</a></p>

]]></content:encoded></item></channel></rss>