HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>5 янв 2021</li>
2 <ul><li>5 янв 2021</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Собеседование без списков - время на ветер. Рассказываем главное, что надо о них знать.</p>
4 </ul><p>Собеседование без списков - время на ветер. Рассказываем главное, что надо о них знать.</p>
5 <p> vlada_maestro / shutterstock</p>
5 <p> vlada_maestro / shutterstock</p>
6 <p>Кандидат философских наук, специалист по математическому моделированию. Пишет про Data Science, AI и программирование на Python.</p>
6 <p>Кандидат философских наук, специалист по математическому моделированию. Пишет про Data Science, AI и программирование на Python.</p>
7 <p>Список - базовая структура данных в Python. На собеседовании на позицию младшего Python-разработчика речь о нём зайдёт практически наверняка.</p>
7 <p>Список - базовая структура данных в Python. На собеседовании на позицию младшего Python-разработчика речь о нём зайдёт практически наверняка.</p>
8 <p>Мы выбрали самые популярные вопросы с собеседований, касающиеся списков, и оценили их сложность в эмодзи: (◡‿◡), (ー_ー) и (&gt; ⌒ &lt;). В большинстве случаев в качестве ответа достаточно написать код и прокомментировать его.</p>
8 <p>Мы выбрали самые популярные вопросы с собеседований, касающиеся списков, и оценили их сложность в эмодзи: (◡‿◡), (ー_ー) и (&gt; ⌒ &lt;). В большинстве случаев в качестве ответа достаточно написать код и прокомментировать его.</p>
9 <p>Если на вашем компьютере нет интерпретатора Python, можно воспользоваться онлайн-сервисами:<a>Repl.it</a>,<a>Python Fiddle</a>,<a>CodeChef</a>и другими - в них можно кодить прямо из браузера. Просто выберите язык Python версии 3.* и запускайте примеры на исполнение.</p>
9 <p>Если на вашем компьютере нет интерпретатора Python, можно воспользоваться онлайн-сервисами:<a>Repl.it</a>,<a>Python Fiddle</a>,<a>CodeChef</a>и другими - в них можно кодить прямо из браузера. Просто выберите язык Python версии 3.* и запускайте примеры на исполнение.</p>
10 <ul><li>Список - это упорядоченный набор элементов, перечисленных через запятую, заключённый в квадратные скобки.</li>
10 <ul><li>Список - это упорядоченный набор элементов, перечисленных через запятую, заключённый в квадратные скобки.</li>
11 <li>Элементы списка могут быть разных типов, в отличие от элементов массива (array), но, как правило, используются списки из элементов одного типа.</li>
11 <li>Элементы списка могут быть разных типов, в отличие от элементов массива (array), но, как правило, используются списки из элементов одного типа.</li>
12 <li>Список может содержать одинаковые элементы, в отличие от множества (set).</li>
12 <li>Список может содержать одинаковые элементы, в отличие от множества (set).</li>
13 <li>Список можно изменить после создания, в отличие от кортежa (tuple).</li>
13 <li>Список можно изменить после создания, в отличие от кортежa (tuple).</li>
14 <li>Список может содержать другие списки.</li>
14 <li>Список может содержать другие списки.</li>
15 </ul><p><strong>Сложность:</strong>(◡‿◡)</p>
15 </ul><p><strong>Сложность:</strong>(◡‿◡)</p>
16 <p>Проще всего списки объединяются с помощью сложения +.</p>
16 <p>Проще всего списки объединяются с помощью сложения +.</p>
17 a = [1, 2] b = ['a', 'c'] print(a + b) &gt;&gt;&gt; [1, 2, 'a', 'c'] print(b + a) &gt;&gt;&gt; ['a', 'c', 1, 2]<p>Как видно, итоговый список будет зависеть от порядка слагаемых. Исходные списки остаются неизменными.</p>
17 a = [1, 2] b = ['a', 'c'] print(a + b) &gt;&gt;&gt; [1, 2, 'a', 'c'] print(b + a) &gt;&gt;&gt; ['a', 'c', 1, 2]<p>Как видно, итоговый список будет зависеть от порядка слагаемых. Исходные списки остаются неизменными.</p>
18 <p>Также списки можно объединить с помощью функции extend (). О ней ниже.</p>
18 <p>Также списки можно объединить с помощью функции extend (). О ней ниже.</p>
19 <p><strong>Сложность:</strong>(◡‿◡)</p>
19 <p><strong>Сложность:</strong>(◡‿◡)</p>
20 <p>Списки можно умножать на целое число (тип int), исходный список при этом не меняется. Умножение списка на другие типы данных, в том числе и на другой список, вызовет ошибку.</p>
20 <p>Списки можно умножать на целое число (тип int), исходный список при этом не меняется. Умножение списка на другие типы данных, в том числе и на другой список, вызовет ошибку.</p>
21 <p>Умножим список [1, 2, 'b'] на 2:</p>
21 <p>Умножим список [1, 2, 'b'] на 2:</p>
22 list_a = [1, 2, 'b'] * 2 print(list_a) &gt;&gt;&gt; [1, 2, 'b', 1, 2, 'b']<p>Содержание списка [1, 2, 'b'] повторилось дважды. Если умножить список на 0 или отрицательное число, то получим пустой список.</p>
22 list_a = [1, 2, 'b'] * 2 print(list_a) &gt;&gt;&gt; [1, 2, 'b', 1, 2, 'b']<p>Содержание списка [1, 2, 'b'] повторилось дважды. Если умножить список на 0 или отрицательное число, то получим пустой список.</p>
23 <p><strong>Сложность:</strong>(◡‿◡)</p>
23 <p><strong>Сложность:</strong>(◡‿◡)</p>
24 <p>Для проверки используем in:</p>
24 <p>Для проверки используем in:</p>
25 'a' in ['a', 'c', 'd', 'e', 'b', 'c'] &gt;&gt;&gt; True 3 in ['a', 'c', 'd', 'e', 'b', 'c'] &gt;&gt;&gt; False<p>В этом примере in возвращает True, когда элемент в списке есть, и False - если нет.</p>
25 'a' in ['a', 'c', 'd', 'e', 'b', 'c'] &gt;&gt;&gt; True 3 in ['a', 'c', 'd', 'e', 'b', 'c'] &gt;&gt;&gt; False<p>В этом примере in возвращает True, когда элемент в списке есть, и False - если нет.</p>
26 <p><strong>Сложность:</strong>(◡‿◡)</p>
26 <p><strong>Сложность:</strong>(◡‿◡)</p>
27 <p>Список переворачивается с помощью функции .reverse (). При этом она меняет исходный список.</p>
27 <p>Список переворачивается с помощью функции .reverse (). При этом она меняет исходный список.</p>
28 list_1 = ['a', 'b', 'c', 'd', 'e'] print(list_1) &gt;&gt;&gt; ['a', 'b', 'c', 'd', 'e'] list_1.reverse() print(list_1) &gt;&gt;&gt; ['e', 'd', 'c', 'b', 'a']<p>Сначала создали список list_1, затем вывели его на экран. Потом перевернули список с помощью .reverse () и вывели на экран уже изменённый список.</p>
28 list_1 = ['a', 'b', 'c', 'd', 'e'] print(list_1) &gt;&gt;&gt; ['a', 'b', 'c', 'd', 'e'] list_1.reverse() print(list_1) &gt;&gt;&gt; ['e', 'd', 'c', 'b', 'a']<p>Сначала создали список list_1, затем вывели его на экран. Потом перевернули список с помощью .reverse () и вывели на экран уже изменённый список.</p>
29 <p><strong>Сложность:</strong>(ー_ー)</p>
29 <p><strong>Сложность:</strong>(ー_ー)</p>
30 <p>Если кратко, то append () добавляет в конец списка значения поодиночке, а extend () добавляет их же и туда же, но уже списками.</p>
30 <p>Если кратко, то append () добавляет в конец списка значения поодиночке, а extend () добавляет их же и туда же, но уже списками.</p>
31 <p>Как работает append ():</p>
31 <p>Как работает append ():</p>
32 list_a = ['a', 'b', 'c'] # создали первый список list_a.append('d') print(list_a) &gt;&gt;&gt; ['a', 'b', 'c', 'd']<p>С помощью функции append () мы добавили одиночное значение 'd' к первому списку list_a и в следующей строке вывели получившийся список на экран. Как видим, в конец списка добавился ещё один элемент 'd'.</p>
32 list_a = ['a', 'b', 'c'] # создали первый список list_a.append('d') print(list_a) &gt;&gt;&gt; ['a', 'b', 'c', 'd']<p>С помощью функции append () мы добавили одиночное значение 'd' к первому списку list_a и в следующей строке вывели получившийся список на экран. Как видим, в конец списка добавился ещё один элемент 'd'.</p>
33 <p>Как работает extend ():</p>
33 <p>Как работает extend ():</p>
34 list_b = [1, 2, 3] # создали второй список list_b.extend(list_a) print(list_b) &gt;&gt;&gt; [1, 2, 3, 'a', 'b', 'c', 'd']<p>Мы применили ко второму списку list_b функцию extend (), аргументом у которой стал другой список, list_a из кода выше. Вывод показал, что оба списка слились в один и стали новым списком list_b.</p>
34 list_b = [1, 2, 3] # создали второй список list_b.extend(list_a) print(list_b) &gt;&gt;&gt; [1, 2, 3, 'a', 'b', 'c', 'd']<p>Мы применили ко второму списку list_b функцию extend (), аргументом у которой стал другой список, list_a из кода выше. Вывод показал, что оба списка слились в один и стали новым списком list_b.</p>
35 <p>Тот же результат будет, если сложить два списка (list_b + list_a) и присвоить результат переменной list_b. Сможете написать код самостоятельно?</p>
35 <p>Тот же результат будет, если сложить два списка (list_b + list_a) и присвоить результат переменной list_b. Сможете написать код самостоятельно?</p>
36 <p><strong>Сложность:</strong>(ー_ー)</p>
36 <p><strong>Сложность:</strong>(ー_ー)</p>
37 <p>Это можно сделать путём преобразования списка во множество (set, иногда ещё его называют "набор"), а затем обратно в список:</p>
37 <p>Это можно сделать путём преобразования списка во множество (set, иногда ещё его называют "набор"), а затем обратно в список:</p>
38 list_b = [1, 1, 3, 1, 4, 8, 4] # список с дубликатами list_b = list(set(list_b)) # здесь основная магия print(list_b) &gt;&gt;&gt; [8, 1, 3, 4]<p>С помощью функции set () преобразовали список list_b во множество, затем тут же, в этой же строке, обратно в список (с помощью уже знакомой нам функции list), и присвоили полученный результат той же переменной list_b. Python очень гибкий язык!</p>
38 list_b = [1, 1, 3, 1, 4, 8, 4] # список с дубликатами list_b = list(set(list_b)) # здесь основная магия print(list_b) &gt;&gt;&gt; [8, 1, 3, 4]<p>С помощью функции set () преобразовали список list_b во множество, затем тут же, в этой же строке, обратно в список (с помощью уже знакомой нам функции list), и присвоили полученный результат той же переменной list_b. Python очень гибкий язык!</p>
39 <p>Здесь используется одно из свойств множества: в нём могут быть только уникальные элементы. Обратите внимание, что порядок следования элементов исходного списка (тех, что остались) может не сохраниться.</p>
39 <p>Здесь используется одно из свойств множества: в нём могут быть только уникальные элементы. Обратите внимание, что порядок следования элементов исходного списка (тех, что остались) может не сохраниться.</p>
40 <p><strong>Сложность:</strong>(ー_ー)</p>
40 <p><strong>Сложность:</strong>(ー_ー)</p>
41 <p>Питонисты очень любят решения в одну строчку. Цикл for содержит минимум две строки, поэтому здесь есть где развернуться.</p>
41 <p>Питонисты очень любят решения в одну строчку. Цикл for содержит минимум две строки, поэтому здесь есть где развернуться.</p>
42 <p>Дан следующий цикл for:</p>
42 <p>Дан следующий цикл for:</p>
43 a = [1, 2, 3, 4, 5] # первый список, по которому бежим a2 = [] # пустой список, который надо заполнить for i in a: a2.append(i + 1) # заполняем его в цикле for print(a2) &gt;&gt;&gt; [2, 3, 4, 5, 6]<p>Пока i бежит по первому списку a, цикл заполняет второй список значениями на единицу больше текущего значения i. Итого четыре строки, не считая вывода итогового списка.</p>
43 a = [1, 2, 3, 4, 5] # первый список, по которому бежим a2 = [] # пустой список, который надо заполнить for i in a: a2.append(i + 1) # заполняем его в цикле for print(a2) &gt;&gt;&gt; [2, 3, 4, 5, 6]<p>Пока i бежит по первому списку a, цикл заполняет второй список значениями на единицу больше текущего значения i. Итого четыре строки, не считая вывода итогового списка.</p>
44 <p>Как сделать то же самое, но с помощью генератора списка:</p>
44 <p>Как сделать то же самое, но с помощью генератора списка:</p>
45 a = [1, 2, 3, 4, 5] # первый список, по которому бежим a3 = [i+1 for i in a] # генератор и сразу итоговый список print(a3) &gt;&gt;&gt; [2, 3, 4, 5, 6]<p>Получили точно такой же список, но уже за две строки и без манипуляций с функцией append () в теле цикла for. Генератор списка принято считать более каноническим способом в Python, если он остаётся понятным.</p>
45 a = [1, 2, 3, 4, 5] # первый список, по которому бежим a3 = [i+1 for i in a] # генератор и сразу итоговый список print(a3) &gt;&gt;&gt; [2, 3, 4, 5, 6]<p>Получили точно такой же список, но уже за две строки и без манипуляций с функцией append () в теле цикла for. Генератор списка принято считать более каноническим способом в Python, если он остаётся понятным.</p>
46 <p><strong>Сложность:</strong>(ー_ー)</p>
46 <p><strong>Сложность:</strong>(ー_ー)</p>
47 <p>Каждый из этих трёх методов (точнее, двух методов и одной команды) удаляет элементы списка. Но каждый делает это по-своему и, соответственно, применяется в разных ситуациях.</p>
47 <p>Каждый из этих трёх методов (точнее, двух методов и одной команды) удаляет элементы списка. Но каждый делает это по-своему и, соответственно, применяется в разных ситуациях.</p>
48 <p>Метод remove () удаляет из списка первое совпадающее значение.</p>
48 <p>Метод remove () удаляет из списка первое совпадающее значение.</p>
49 <p>Возьмём список и удалим из него элемент 'b':</p>
49 <p>Возьмём список и удалим из него элемент 'b':</p>
50 list_1 = ['a', 'b', 'c', 'd', 'e', 'b', 'c'] list_1.remove('b') print(list_1) &gt;&gt;&gt; ['a', 'c', 'd', 'e', 'b', 'c']<p>Первая 'b' исчезла, но вторая 'b' осталась в списке.</p>
50 list_1 = ['a', 'b', 'c', 'd', 'e', 'b', 'c'] list_1.remove('b') print(list_1) &gt;&gt;&gt; ['a', 'c', 'd', 'e', 'b', 'c']<p>Первая 'b' исчезла, но вторая 'b' осталась в списке.</p>
51 <p>Метод pop () удаляет элемент по индексу и возвращает этот элемент:</p>
51 <p>Метод pop () удаляет элемент по индексу и возвращает этот элемент:</p>
52 list_3 = ['a','b','c','d'] list_3.pop(2) &gt;&gt;&gt; 'c' print(list_3) &gt;&gt;&gt; ['a', 'b', 'd']<p>Индексация в Python идёт с нуля, поэтому элемент с индексом 2 - третий по счёту. В последних строчках мы вывели изменённый список.</p>
52 list_3 = ['a','b','c','d'] list_3.pop(2) &gt;&gt;&gt; 'c' print(list_3) &gt;&gt;&gt; ['a', 'b', 'd']<p>Индексация в Python идёт с нуля, поэтому элемент с индексом 2 - третий по счёту. В последних строчках мы вывели изменённый список.</p>
53 <p>Команда del тоже удаляет элемент списка по его индексу, но имеет отличный от pop () синтаксис и ничего не возвращает:</p>
53 <p>Команда del тоже удаляет элемент списка по его индексу, но имеет отличный от pop () синтаксис и ничего не возвращает:</p>
54 list_1 = ['a', 'c', 'd', 'e', 'b', 'c'] del list_1[4] print(list_1) &gt;&gt;&gt; ['a', 'c', 'd', 'e', 'c']<p>Мы недосчитались четвёртого по индексу (и пятого по счёту) элемента, то есть 'b'.</p>
54 list_1 = ['a', 'c', 'd', 'e', 'b', 'c'] del list_1[4] print(list_1) &gt;&gt;&gt; ['a', 'c', 'd', 'e', 'c']<p>Мы недосчитались четвёртого по индексу (и пятого по счёту) элемента, то есть 'b'.</p>
55 <p>Также команда del может удалять из списка срезы (slices):</p>
55 <p>Также команда del может удалять из списка срезы (slices):</p>
56 list_2 = [-1, 1, 66.25, 333, 337, 1234.5] del list_2[2:4] print(list_2) &gt;&gt;&gt; [-1, 1, 337, 1234.5]<p>При указании границ среза в Python последний элемент в срез не входит. Поэтому из списка удалены элементы с третьего (индекс 2) по пятый (индекс 4), исключая последний, то есть 66.25 и 333.</p>
56 list_2 = [-1, 1, 66.25, 333, 337, 1234.5] del list_2[2:4] print(list_2) &gt;&gt;&gt; [-1, 1, 337, 1234.5]<p>При указании границ среза в Python последний элемент в срез не входит. Поэтому из списка удалены элементы с третьего (индекс 2) по пятый (индекс 4), исключая последний, то есть 66.25 и 333.</p>
57 <p>Наконец, del может удалять целые переменные.</p>
57 <p>Наконец, del может удалять целые переменные.</p>
58 list_2 = [-1, 1, 66.25, 333, 333, 1234.5] print(list_2) &gt;&gt;&gt; [-1, 1, 66.25, 333, 333, 1234.5] del list_2 print(list_2) Traceback (most recent call last): File "&lt;pyshell#55&gt;", line 1, in &lt;module&gt; list_2 NameError: name 'list_2' is not defined<p>Сначала создали список, затем вывели его на экран, чтобы убедиться, что он существует. Потом применили к нему команду del и вызвали снова. Ошибка! Python забыл, что вообще была такая переменная list_2.</p>
58 list_2 = [-1, 1, 66.25, 333, 333, 1234.5] print(list_2) &gt;&gt;&gt; [-1, 1, 66.25, 333, 333, 1234.5] del list_2 print(list_2) Traceback (most recent call last): File "&lt;pyshell#55&gt;", line 1, in &lt;module&gt; list_2 NameError: name 'list_2' is not defined<p>Сначала создали список, затем вывели его на экран, чтобы убедиться, что он существует. Потом применили к нему команду del и вызвали снова. Ошибка! Python забыл, что вообще была такая переменная list_2.</p>
59 <p><strong>Сложность:</strong>(&gt; ⌒ &lt;)</p>
59 <p><strong>Сложность:</strong>(&gt; ⌒ &lt;)</p>
60 <p>Такие вопросы надо отбивать особенно чётко. Если спрашивающий не услышит конкретные ключевые слова, его подозрительность повысится, а ваши шансы, наоборот, снизятся.</p>
60 <p>Такие вопросы надо отбивать особенно чётко. Если спрашивающий не услышит конкретные ключевые слова, его подозрительность повысится, а ваши шансы, наоборот, снизятся.</p>
61 <p>Список можно менять после создания (например, с помощью функции append ()), а кортеж нет: он защищает данные от изменений после создания. По этой причине кортеж можно использовать в качестве ключа в словарях, а список нельзя. Кроме того, кортеж обрабатывается интерпретатором Python чуть быстрее.</p>
61 <p>Список можно менять после создания (например, с помощью функции append ()), а кортеж нет: он защищает данные от изменений после создания. По этой причине кортеж можно использовать в качестве ключа в словарях, а список нельзя. Кроме того, кортеж обрабатывается интерпретатором Python чуть быстрее.</p>
62 <p>Список упорядочен: каждый элемент списка имеет индекс, а элемент множества - нет. Список может содержать одинаковые значения, а во множестве каждое значение уникально. Проверка, принадлежит ли элемент множеству, выполняется быстрее, чем такая же проверка элемента списка.</p>
62 <p>Список упорядочен: каждый элемент списка имеет индекс, а элемент множества - нет. Список может содержать одинаковые значения, а во множестве каждое значение уникально. Проверка, принадлежит ли элемент множеству, выполняется быстрее, чем такая же проверка элемента списка.</p>
63 <p>Словарь состоит из пар "ключ-значение", а список может состоять и из одиночных элементов, и из пар, и из троек - если элементами будут другие списки или кортежи. Ключи у словаря должны быть уникальными и иметь неизменяемый тип, у списка таких ограничений нет. Поиск по словарю быстрее, чем по списку.</p>
63 <p>Словарь состоит из пар "ключ-значение", а список может состоять и из одиночных элементов, и из пар, и из троек - если элементами будут другие списки или кортежи. Ключи у словаря должны быть уникальными и иметь неизменяемый тип, у списка таких ограничений нет. Поиск по словарю быстрее, чем по списку.</p>
64 <p>Для использования массива нужно вызывать библиотеку array, а списки встроены в Python. В массиве могут содержаться элементы только одного типа. Массив не может содержать другие массивы или списки. Массив занимает меньше памяти и поэтому быстрее, чем одномерный список.</p>
64 <p>Для использования массива нужно вызывать библиотеку array, а списки встроены в Python. В массиве могут содержаться элементы только одного типа. Массив не может содержать другие массивы или списки. Массив занимает меньше памяти и поэтому быстрее, чем одномерный список.</p>
65 <p>Всё то же самое, что и в предыдущем пункте, только нужно вызывать библиотеку numpy. Плюс отличие в арифметических действиях: например, сложение не объединяет массивы, а применяется к их элементам по правилам линейной алгебры.</p>
65 <p>Всё то же самое, что и в предыдущем пункте, только нужно вызывать библиотеку numpy. Плюс отличие в арифметических действиях: например, сложение не объединяет массивы, а применяется к их элементам по правилам линейной алгебры.</p>
66 <p><strong>Сложность:</strong>(&gt; ⌒ &lt;)</p>
66 <p><strong>Сложность:</strong>(&gt; ⌒ &lt;)</p>
67 <p>Для объединения двух списков в список кортежей можно использовать функцию zip, причём не только для двух, но и для трёх и более списков. Это полезно для формирования, например, матриц из векторов.</p>
67 <p>Для объединения двух списков в список кортежей можно использовать функцию zip, причём не только для двух, но и для трёх и более списков. Это полезно для формирования, например, матриц из векторов.</p>
68 list_a = ['a' ,'b' ,'c', 'd'] list_b = [1, 2, 3, 4] list_c = [(k, v) for k, v in zip(list_a, list_b)]) print(list_c) &gt;&gt;&gt; [('a', 1), ('b', 2), ('c', 3), ('d', 4)]<p>В первых двух строчках мы создали два списка, которые надо объединить. В третьей с помощью конструкции, похожей на двойной генератор, создали список, состоящий из кортежей вида (k, v), где k и v берутся из двух наших списков с помощью функции zip (). К слову, она не зря носит такое название: в переводе zip означает "застёжка-молния", и эта функция как бы сшивает два списка в один.</p>
68 list_a = ['a' ,'b' ,'c', 'd'] list_b = [1, 2, 3, 4] list_c = [(k, v) for k, v in zip(list_a, list_b)]) print(list_c) &gt;&gt;&gt; [('a', 1), ('b', 2), ('c', 3), ('d', 4)]<p>В первых двух строчках мы создали два списка, которые надо объединить. В третьей с помощью конструкции, похожей на двойной генератор, создали список, состоящий из кортежей вида (k, v), где k и v берутся из двух наших списков с помощью функции zip (). К слову, она не зря носит такое название: в переводе zip означает "застёжка-молния", и эта функция как бы сшивает два списка в один.</p>
69 <p>Не забудьте проверить, что случится, если списки будут разной длины, и можно ли получить не список кортежей, а список списков.</p>
69 <p>Не забудьте проверить, что случится, если списки будут разной длины, и можно ли получить не список кортежей, а список списков.</p>
70 <p><strong>Сложность:</strong>(ー_ー)</p>
70 <p><strong>Сложность:</strong>(ー_ー)</p>
71 <p>Функция range () генерирует три разных вида последовательностей из целых чисел и часто используется для быстрого создания списков - поэтому этот вопрос и попал в нашу подборку. Да и объяснять работу функции удобнее всего именно с помощью списка.</p>
71 <p>Функция range () генерирует три разных вида последовательностей из целых чисел и часто используется для быстрого создания списков - поэтому этот вопрос и попал в нашу подборку. Да и объяснять работу функции удобнее всего именно с помощью списка.</p>
72 <p>Используется range (n):</p>
72 <p>Используется range (n):</p>
73 list_a = [i for i in range(10)] # первый способ print(list_a) &gt;&gt;&gt; [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] list_b = list(range(10)) # второй способ print(list_b) &gt;&gt;&gt; [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]<p>Функция range (n) сгенерировала последовательность от нуля до n (исключая n), а мы эту последовательность двумя способами обернули в список. Первый способ вы уже узнали - это генератор списков, а второй использует функцию list, которая превращает подходящий аргумент в список.</p>
73 list_a = [i for i in range(10)] # первый способ print(list_a) &gt;&gt;&gt; [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] list_b = list(range(10)) # второй способ print(list_b) &gt;&gt;&gt; [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]<p>Функция range (n) сгенерировала последовательность от нуля до n (исключая n), а мы эту последовательность двумя способами обернули в список. Первый способ вы уже узнали - это генератор списков, а второй использует функцию list, которая превращает подходящий аргумент в список.</p>
74 <p>Попробуйте передать в range () отрицательное (-7) или дробное (3.14) число. Получится ли какой-нибудь список из этого, и если да, то какой?</p>
74 <p>Попробуйте передать в range () отрицательное (-7) или дробное (3.14) число. Получится ли какой-нибудь список из этого, и если да, то какой?</p>
75 <p>Здесь в функцию range () нужно передать уже<em>два</em>аргумента: тогда range (n, m) сгенерирует целые числа от n до m (исключая m):</p>
75 <p>Здесь в функцию range () нужно передать уже<em>два</em>аргумента: тогда range (n, m) сгенерирует целые числа от n до m (исключая m):</p>
76 list_a = [i for i in range(3, 12)] # первый способ print(list_a) &gt;&gt;&gt; [3, 4, 5, 6, 7, 8, 9, 10, 11] list_b = list(range(9, 20)) # второй способ print(list_a) &gt;&gt;&gt; [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]<p>Если в функцию range () передать три аргумента n, m, k, то она снова создаст последовательность от n до m (снова исключая m), но уже с шагом k:</p>
76 list_a = [i for i in range(3, 12)] # первый способ print(list_a) &gt;&gt;&gt; [3, 4, 5, 6, 7, 8, 9, 10, 11] list_b = list(range(9, 20)) # второй способ print(list_a) &gt;&gt;&gt; [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]<p>Если в функцию range () передать три аргумента n, m, k, то она снова создаст последовательность от n до m (снова исключая m), но уже с шагом k:</p>
77 list_a = [i for i in range(2, 34, 4)] # первый способ print(list_a) &gt;&gt;&gt; [2, 6, 10, 14, 18, 22, 26, 30] list_b = list(range(2, 34, 4)) # второй способ print(list_b) &gt;&gt;&gt; [2, 6, 10, 14, 18, 22, 26, 30]<p>Разница между элементами (шаг) равна третьему аргументу, то есть 4. Так как последний элемент (34) исключён, то список у нас заканчивается на 30.</p>
77 list_a = [i for i in range(2, 34, 4)] # первый способ print(list_a) &gt;&gt;&gt; [2, 6, 10, 14, 18, 22, 26, 30] list_b = list(range(2, 34, 4)) # второй способ print(list_b) &gt;&gt;&gt; [2, 6, 10, 14, 18, 22, 26, 30]<p>Разница между элементами (шаг) равна третьему аргументу, то есть 4. Так как последний элемент (34) исключён, то список у нас заканчивается на 30.</p>
78 <p>Так (или примерно так) говорил ещё Архимед, а кто мы такие, чтоб с ним спорить. Список - простой, понятный и надёжный инструмент: в любой непонятной ситуации попробуйте сначала применить список, и даже если он не подойдёт, то подскажет, как и чем решать задачу дальше. Обязательно посмотрите другие методы списков из <a>официальной документации</a>Python, чтобы они не оказались для вас сюрпризом на собеседовании.</p>
78 <p>Так (или примерно так) говорил ещё Архимед, а кто мы такие, чтоб с ним спорить. Список - простой, понятный и надёжный инструмент: в любой непонятной ситуации попробуйте сначала применить список, и даже если он не подойдёт, то подскажет, как и чем решать задачу дальше. Обязательно посмотрите другие методы списков из <a>официальной документации</a>Python, чтобы они не оказались для вас сюрпризом на собеседовании.</p>
79 <p>Конечно, Python - это не только списки, и изучать его лучше на родном языке в компании единомышленников. Приходите на наш курс "<a>Профессия Python-разработчик</a>". Под руководством опытных наставников вы станете настоящим укротителем питонов повелителем списков, массивов и словарей, а заодно получите востребованную и высокооплачиваемую специальность.</p>
79 <p>Конечно, Python - это не только списки, и изучать его лучше на родном языке в компании единомышленников. Приходите на наш курс "<a>Профессия Python-разработчик</a>". Под руководством опытных наставников вы станете настоящим укротителем питонов повелителем списков, массивов и словарей, а заодно получите востребованную и высокооплачиваемую специальность.</p>
80 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
80 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>