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>Мы выбрали самые популярные вопросы с собеседований, касающиеся списков, и оценили их сложность в эмодзи: (◡‿◡), (ー_ー) и (> ⌒ <). В большинстве случаев в качестве ответа достаточно написать код и прокомментировать его.</p>
8
<p>Мы выбрали самые популярные вопросы с собеседований, касающиеся списков, и оценили их сложность в эмодзи: (◡‿◡), (ー_ー) и (> ⌒ <). В большинстве случаев в качестве ответа достаточно написать код и прокомментировать его.</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) >>> [1, 2, 'a', 'c'] print(b + a) >>> ['a', 'c', 1, 2]<p>Как видно, итоговый список будет зависеть от порядка слагаемых. Исходные списки остаются неизменными.</p>
17
a = [1, 2] b = ['a', 'c'] print(a + b) >>> [1, 2, 'a', 'c'] print(b + a) >>> ['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) >>> [1, 2, 'b', 1, 2, 'b']<p>Содержание списка [1, 2, 'b'] повторилось дважды. Если умножить список на 0 или отрицательное число, то получим пустой список.</p>
22
list_a = [1, 2, 'b'] * 2 print(list_a) >>> [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'] >>> True 3 in ['a', 'c', 'd', 'e', 'b', 'c'] >>> False<p>В этом примере in возвращает True, когда элемент в списке есть, и False - если нет.</p>
25
'a' in ['a', 'c', 'd', 'e', 'b', 'c'] >>> True 3 in ['a', 'c', 'd', 'e', 'b', 'c'] >>> 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) >>> ['a', 'b', 'c', 'd', 'e'] list_1.reverse() print(list_1) >>> ['e', 'd', 'c', 'b', 'a']<p>Сначала создали список list_1, затем вывели его на экран. Потом перевернули список с помощью .reverse () и вывели на экран уже изменённый список.</p>
28
list_1 = ['a', 'b', 'c', 'd', 'e'] print(list_1) >>> ['a', 'b', 'c', 'd', 'e'] list_1.reverse() print(list_1) >>> ['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) >>> ['a', 'b', 'c', 'd']<p>С помощью функции append () мы добавили одиночное значение 'd' к первому списку list_a и в следующей строке вывели получившийся список на экран. Как видим, в конец списка добавился ещё один элемент 'd'.</p>
32
list_a = ['a', 'b', 'c'] # создали первый список list_a.append('d') print(list_a) >>> ['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) >>> [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) >>> [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) >>> [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) >>> [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) >>> [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) >>> [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) >>> [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) >>> [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) >>> ['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) >>> ['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) >>> 'c' print(list_3) >>> ['a', 'b', 'd']<p>Индексация в Python идёт с нуля, поэтому элемент с индексом 2 - третий по счёту. В последних строчках мы вывели изменённый список.</p>
52
list_3 = ['a','b','c','d'] list_3.pop(2) >>> 'c' print(list_3) >>> ['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) >>> ['a', 'c', 'd', 'e', 'c']<p>Мы недосчитались четвёртого по индексу (и пятого по счёту) элемента, то есть 'b'.</p>
54
list_1 = ['a', 'c', 'd', 'e', 'b', 'c'] del list_1[4] print(list_1) >>> ['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) >>> [-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) >>> [-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) >>> [-1, 1, 66.25, 333, 333, 1234.5] del list_2 print(list_2) Traceback (most recent call last): File "<pyshell#55>", line 1, in <module> 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) >>> [-1, 1, 66.25, 333, 333, 1234.5] del list_2 print(list_2) Traceback (most recent call last): File "<pyshell#55>", line 1, in <module> list_2 NameError: name 'list_2' is not defined<p>Сначала создали список, затем вывели его на экран, чтобы убедиться, что он существует. Потом применили к нему команду del и вызвали снова. Ошибка! Python забыл, что вообще была такая переменная list_2.</p>
59
<p><strong>Сложность:</strong>(> ⌒ <)</p>
59
<p><strong>Сложность:</strong>(> ⌒ <)</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>(> ⌒ <)</p>
66
<p><strong>Сложность:</strong>(> ⌒ <)</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) >>> [('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) >>> [('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) >>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] list_b = list(range(10)) # второй способ print(list_b) >>> [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) >>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] list_b = list(range(10)) # второй способ print(list_b) >>> [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) >>> [3, 4, 5, 6, 7, 8, 9, 10, 11] list_b = list(range(9, 20)) # второй способ print(list_a) >>> [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) >>> [3, 4, 5, 6, 7, 8, 9, 10, 11] list_b = list(range(9, 20)) # второй способ print(list_a) >>> [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) >>> [2, 6, 10, 14, 18, 22, 26, 30] list_b = list(range(2, 34, 4)) # второй способ print(list_b) >>> [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) >>> [2, 6, 10, 14, 18, 22, 26, 30] list_b = list(range(2, 34, 4)) # второй способ print(list_b) >>> [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>