[{"data":1,"prerenderedAt":2388},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fpython\u002Fst15":386,"\u002Fblog\u002Fpython\u002Fst15-surround":2383},[4],{"title":5,"path":6,"stem":7,"children":8,"page":114},"Blog","\u002Fblog","blog",[9,115,184,329],{"title":10,"path":11,"stem":12,"children":13,"page":114},"Ege","\u002Fblog\u002Fege","blog\u002Fege",[14,18,22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86,90,94,98,102,106,110],{"title":15,"path":16,"stem":17},"ЕГЭ Задание 1","\u002Fblog\u002Fege\u002Ftask1","blog\u002Fege\u002Ftask1",{"title":19,"path":20,"stem":21},"ЕГЭ Задание 10","\u002Fblog\u002Fege\u002Ftask10","blog\u002Fege\u002Ftask10",{"title":23,"path":24,"stem":25},"ЕГЭ Задание 11","\u002Fblog\u002Fege\u002Ftask11","blog\u002Fege\u002Ftask11",{"title":27,"path":28,"stem":29},"ЕГЭ Задание 12","\u002Fblog\u002Fege\u002Ftask12","blog\u002Fege\u002Ftask12",{"title":31,"path":32,"stem":33},"ЕГЭ Задание 13","\u002Fblog\u002Fege\u002Ftask13","blog\u002Fege\u002Ftask13",{"title":35,"path":36,"stem":37},"ЕГЭ Задание 14","\u002Fblog\u002Fege\u002Ftask14","blog\u002Fege\u002Ftask14",{"title":39,"path":40,"stem":41},"ЕГЭ Задание 15","\u002Fblog\u002Fege\u002Ftask15","blog\u002Fege\u002Ftask15",{"title":43,"path":44,"stem":45},"ЕГЭ Задание 16","\u002Fblog\u002Fege\u002Ftask16","blog\u002Fege\u002Ftask16",{"title":47,"path":48,"stem":49},"ЕГЭ Задание 17","\u002Fblog\u002Fege\u002Ftask17","blog\u002Fege\u002Ftask17",{"title":51,"path":52,"stem":53},"ЕГЭ Задание 18","\u002Fblog\u002Fege\u002Ftask18","blog\u002Fege\u002Ftask18",{"title":55,"path":56,"stem":57},"ЕГЭ Задание 19, 20, 21","\u002Fblog\u002Fege\u002Ftask19_20_21","blog\u002Fege\u002Ftask19_20_21",{"title":59,"path":60,"stem":61},"ЕГЭ Задание 2","\u002Fblog\u002Fege\u002Ftask2","blog\u002Fege\u002Ftask2",{"title":63,"path":64,"stem":65},"ЕГЭ Задание 22","\u002Fblog\u002Fege\u002Ftask22","blog\u002Fege\u002Ftask22",{"title":67,"path":68,"stem":69},"ЕГЭ Задание 23","\u002Fblog\u002Fege\u002Ftask23","blog\u002Fege\u002Ftask23",{"title":71,"path":72,"stem":73},"ЕГЭ Задание 24","\u002Fblog\u002Fege\u002Ftask24","blog\u002Fege\u002Ftask24",{"title":75,"path":76,"stem":77},"ЕГЭ Задание 25","\u002Fblog\u002Fege\u002Ftask25","blog\u002Fege\u002Ftask25",{"title":79,"path":80,"stem":81},"ЕГЭ Задание 26","\u002Fblog\u002Fege\u002Ftask26","blog\u002Fege\u002Ftask26",{"title":83,"path":84,"stem":85},"ЕГЭ Задание 27","\u002Fblog\u002Fege\u002Ftask27","blog\u002Fege\u002Ftask27",{"title":87,"path":88,"stem":89},"ЕГЭ Задание 3","\u002Fblog\u002Fege\u002Ftask3","blog\u002Fege\u002Ftask3",{"title":91,"path":92,"stem":93},"ЕГЭ Задание 4","\u002Fblog\u002Fege\u002Ftask4","blog\u002Fege\u002Ftask4",{"title":95,"path":96,"stem":97},"ЕГЭ Задание 5","\u002Fblog\u002Fege\u002Ftask5","blog\u002Fege\u002Ftask5",{"title":99,"path":100,"stem":101},"ЕГЭ Задание 6","\u002Fblog\u002Fege\u002Ftask6","blog\u002Fege\u002Ftask6",{"title":103,"path":104,"stem":105},"ЕГЭ Задание 7","\u002Fblog\u002Fege\u002Ftask7","blog\u002Fege\u002Ftask7",{"title":107,"path":108,"stem":109},"ЕГЭ Задание 8","\u002Fblog\u002Fege\u002Ftask8","blog\u002Fege\u002Ftask8",{"title":111,"path":112,"stem":113},"ЕГЭ Задание 9","\u002Fblog\u002Fege\u002Ftask9","blog\u002Fege\u002Ftask9",false,{"title":116,"path":117,"stem":118,"children":119,"page":114},"Oge","\u002Fblog\u002Foge","blog\u002Foge",[120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180],{"title":121,"path":122,"stem":123},"ОГЭ Задание 1","\u002Fblog\u002Foge\u002Ftask1","blog\u002Foge\u002Ftask1",{"title":125,"path":126,"stem":127},"ОГЭ Задание 10","\u002Fblog\u002Foge\u002Ftask10","blog\u002Foge\u002Ftask10",{"title":129,"path":130,"stem":131},"ОГЭ Задание 11","\u002Fblog\u002Foge\u002Ftask11","blog\u002Foge\u002Ftask11",{"title":133,"path":134,"stem":135},"ОГЭ Задание 12","\u002Fblog\u002Foge\u002Ftask12","blog\u002Foge\u002Ftask12",{"title":137,"path":138,"stem":139},"ОГЭ Задание 13","\u002Fblog\u002Foge\u002Ftask13","blog\u002Foge\u002Ftask13",{"title":141,"path":142,"stem":143},"ОГЭ Задание 14","\u002Fblog\u002Foge\u002Ftask14","blog\u002Foge\u002Ftask14",{"title":145,"path":146,"stem":147},"ОГЭ Задание 15","\u002Fblog\u002Foge\u002Ftask15","blog\u002Foge\u002Ftask15",{"title":149,"path":150,"stem":151},"ОГЭ Задание 16","\u002Fblog\u002Foge\u002Ftask16","blog\u002Foge\u002Ftask16",{"title":153,"path":154,"stem":155},"ОГЭ Задание 2","\u002Fblog\u002Foge\u002Ftask2","blog\u002Foge\u002Ftask2",{"title":157,"path":158,"stem":159},"ОГЭ Задание 3","\u002Fblog\u002Foge\u002Ftask3","blog\u002Foge\u002Ftask3",{"title":161,"path":162,"stem":163},"ОГЭ Задание 4","\u002Fblog\u002Foge\u002Ftask4","blog\u002Foge\u002Ftask4",{"title":165,"path":166,"stem":167},"ОГЭ Задание 5","\u002Fblog\u002Foge\u002Ftask5","blog\u002Foge\u002Ftask5",{"title":169,"path":170,"stem":171},"ОГЭ Задание 6","\u002Fblog\u002Foge\u002Ftask6","blog\u002Foge\u002Ftask6",{"title":173,"path":174,"stem":175},"ОГЭ Задание 7","\u002Fblog\u002Foge\u002Ftask7","blog\u002Foge\u002Ftask7",{"title":177,"path":178,"stem":179},"ОГЭ Задание 8","\u002Fblog\u002Foge\u002Ftask8","blog\u002Foge\u002Ftask8",{"title":181,"path":182,"stem":183},"ОГЭ Задание 9","\u002Fblog\u002Foge\u002Ftask9","blog\u002Foge\u002Ftask9",{"title":185,"path":186,"stem":187,"children":188,"page":114},"Python","\u002Fblog\u002Fpython","blog\u002Fpython",[189,193,197,201,205,209,213,217,221,225,229,233,237,241,245,249,253,257,261,265,269,273,277,281,285,289,293,297,301,305,309,313,317,321,325],{"title":190,"path":191,"stem":192},"Знакомство с синтаксисом","\u002Fblog\u002Fpython\u002Fst1","blog\u002Fpython\u002Fst1",{"title":194,"path":195,"stem":196},"Отладка","\u002Fblog\u002Fpython\u002Fst10","blog\u002Fpython\u002Fst10",{"title":198,"path":199,"stem":200},"Модули и пакеты","\u002Fblog\u002Fpython\u002Fst11","blog\u002Fpython\u002Fst11",{"title":202,"path":203,"stem":204},"Кортежи","\u002Fblog\u002Fpython\u002Fst12","blog\u002Fpython\u002Fst12",{"title":206,"path":207,"stem":208},"Знакомство со списками","\u002Fblog\u002Fpython\u002Fst13","blog\u002Fpython\u002Fst13",{"title":210,"path":211,"stem":212},"Списки и циклы","\u002Fblog\u002Fpython\u002Fst14","blog\u002Fpython\u002Fst14",{"title":214,"path":215,"stem":216},"Использование списков ч.1","\u002Fblog\u002Fpython\u002Fst15","blog\u002Fpython\u002Fst15",{"title":218,"path":219,"stem":220},"Использование списков ч.2","\u002Fblog\u002Fpython\u002Fst16","blog\u002Fpython\u002Fst16",{"title":222,"path":223,"stem":224},"Использование списков ч.3","\u002Fblog\u002Fpython\u002Fst17","blog\u002Fpython\u002Fst17",{"title":226,"path":227,"stem":228},"Словари","\u002Fblog\u002Fpython\u002Fst18","blog\u002Fpython\u002Fst18",{"title":230,"path":231,"stem":232},"Множества","\u002Fblog\u002Fpython\u002Fst19","blog\u002Fpython\u002Fst19",{"title":234,"path":235,"stem":236},"Переменные","\u002Fblog\u002Fpython\u002Fst2","blog\u002Fpython\u002Fst2",{"title":238,"path":239,"stem":240},"Хеш-таблицы","\u002Fblog\u002Fpython\u002Fst20","blog\u002Fpython\u002Fst20",{"title":242,"path":243,"stem":244},"Решето Эратосфена","\u002Fblog\u002Fpython\u002Fst21","blog\u002Fpython\u002Fst21",{"title":246,"path":247,"stem":248},"Длинная арифметика","\u002Fblog\u002Fpython\u002Fst22","blog\u002Fpython\u002Fst22",{"title":250,"path":251,"stem":252},"Декораторы функций","\u002Fblog\u002Fpython\u002Fst23","blog\u002Fpython\u002Fst23",{"title":254,"path":255,"stem":256},"Знакомство с алгоритмами","\u002Fblog\u002Fpython\u002Fst24","blog\u002Fpython\u002Fst24",{"title":258,"path":259,"stem":260},"Бинарный поиск – примеры задач","\u002Fblog\u002Fpython\u002Fst25","blog\u002Fpython\u002Fst25",{"title":262,"path":263,"stem":264},"Сортировка выбором","\u002Fblog\u002Fpython\u002Fst26","blog\u002Fpython\u002Fst26",{"title":266,"path":267,"stem":268},"Рекурсия и стек","\u002Fblog\u002Fpython\u002Fst27","blog\u002Fpython\u002Fst27",{"title":270,"path":271,"stem":272},"Быстрая сортировка","\u002Fblog\u002Fpython\u002Fst28","blog\u002Fpython\u002Fst28",{"title":274,"path":275,"stem":276},"Поиск в ширину","\u002Fblog\u002Fpython\u002Fst29","blog\u002Fpython\u002Fst29",{"title":278,"path":279,"stem":280},"Работа со строками","\u002Fblog\u002Fpython\u002Fst3","blog\u002Fpython\u002Fst3",{"title":282,"path":283,"stem":284},"Поиск в глубину","\u002Fblog\u002Fpython\u002Fst30","blog\u002Fpython\u002Fst30",{"title":286,"path":287,"stem":288},"Сбалансированные деревья","\u002Fblog\u002Fpython\u002Fst31","blog\u002Fpython\u002Fst31",{"title":290,"path":291,"stem":292},"Алгоритм Дейкстры","\u002Fblog\u002Fpython\u002Fst32","blog\u002Fpython\u002Fst32",{"title":294,"path":295,"stem":296},"Жадные алгоритмы","\u002Fblog\u002Fpython\u002Fst33","blog\u002Fpython\u002Fst33",{"title":298,"path":299,"stem":300},"Динамическое программирование","\u002Fblog\u002Fpython\u002Fst34","blog\u002Fpython\u002Fst34",{"title":302,"path":303,"stem":304},"Алгоритм k ближайших соседей","\u002Fblog\u002Fpython\u002Fst35","blog\u002Fpython\u002Fst35",{"title":306,"path":307,"stem":308},"Типы данных","\u002Fblog\u002Fpython\u002Fst4","blog\u002Fpython\u002Fst4",{"title":310,"path":311,"stem":312},"О функциях","\u002Fblog\u002Fpython\u002Fst5","blog\u002Fpython\u002Fst5",{"title":314,"path":315,"stem":316},"Свойства и методы","\u002Fblog\u002Fpython\u002Fst6","blog\u002Fpython\u002Fst6",{"title":318,"path":319,"stem":320},"Определение функций","\u002Fblog\u002Fpython\u002Fst7","blog\u002Fpython\u002Fst7",{"title":322,"path":323,"stem":324},"Логика","\u002Fblog\u002Fpython\u002Fst8","blog\u002Fpython\u002Fst8",{"title":326,"path":327,"stem":328},"Циклы","\u002Fblog\u002Fpython\u002Fst9","blog\u002Fpython\u002Fst9",{"title":330,"path":331,"stem":332,"children":333,"page":114},"Toi","\u002Fblog\u002Ftoi","blog\u002Ftoi",[334,338,342,346,350,354,358,362,366,370,374,378,382],{"title":335,"path":336,"stem":337},"Информация и информационные процессы","\u002Fblog\u002Ftoi\u002Fst1","blog\u002Ftoi\u002Fst1",{"title":339,"path":340,"stem":341},"Электронные таблицы","\u002Fblog\u002Ftoi\u002Fst10","blog\u002Ftoi\u002Fst10",{"title":343,"path":344,"stem":345},"Система, её свойства и компоненты. Моделирование","\u002Fblog\u002Ftoi\u002Fst11","blog\u002Ftoi\u002Fst11",{"title":347,"path":348,"stem":349},"Представление информации в компьютере","\u002Fblog\u002Ftoi\u002Fst12","blog\u002Ftoi\u002Fst12",{"title":351,"path":352,"stem":353},"Средства информационно-коммуникационных технологий. Файловая система","\u002Fblog\u002Ftoi\u002Fst13","blog\u002Ftoi\u002Fst13",{"title":355,"path":356,"stem":357},"Комбинаторика","\u002Fblog\u002Ftoi\u002Fst2","blog\u002Ftoi\u002Fst2",{"title":359,"path":360,"stem":361},"Адресация в интернете","\u002Fblog\u002Ftoi\u002Fst3","blog\u002Ftoi\u002Fst3",{"title":363,"path":364,"stem":365},"Измерение количества информации","\u002Fblog\u002Ftoi\u002Fst4","blog\u002Ftoi\u002Fst4",{"title":367,"path":368,"stem":369},"Системы счисления","\u002Fblog\u002Ftoi\u002Fst5","blog\u002Ftoi\u002Fst5",{"title":371,"path":372,"stem":373},"Диаграммы Эйлера — Венна","\u002Fblog\u002Ftoi\u002Fst6","blog\u002Ftoi\u002Fst6",{"title":375,"path":376,"stem":377},"Условие Фано","\u002Fblog\u002Ftoi\u002Fst7","blog\u002Ftoi\u002Fst7",{"title":379,"path":380,"stem":381},"Теория графов","\u002Fblog\u002Ftoi\u002Fst8","blog\u002Ftoi\u002Fst8",{"title":383,"path":384,"stem":385},"Алгебра логики","\u002Fblog\u002Ftoi\u002Fst9","blog\u002Ftoi\u002Fst9",{"id":387,"title":214,"author":388,"body":393,"date":2374,"description":2375,"extension":2376,"image":2377,"meta":2378,"minRead":2379,"navigation":479,"num":2380,"path":215,"seo":2381,"stem":216,"__hash__":2382},"python\u002Fblog\u002Fpython\u002Fst15.md",{"name":389,"avatar":390},"Штана Альберт Игоревич",{"src":391,"alt":392},"me.jpg","@ashtana",{"type":394,"value":395,"toc":2356},"minimark",[396,400,405,409,426,431,437,442,445,592,596,599,680,686,690,693,774,778,785,848,852,855,859,862,977,990,1093,1096,1138,1154,1248,1254,1404,1408,1420,1490,1493,1528,1532,1538,1620,1624,1627,1708,1711,1784,1787,1871,1874,1970,1973,2031,2034,2071,2074,2107,2110,2234,2237,2314,2317,2338,2349,2352],[397,398,214],"h2",{"id":399},"использование-списков-ч1",[401,402,404],"h3",{"id":403},"использование-списков-как-множеств","Использование списков как множеств",[406,407,408],"p",{},"Теория множеств – крайне важная математическая концепция для любых разработчиков.\nДанные, с которыми работают программы, часто представляются как множества — значит, к ним применимы правила теории множеств.\nВ первую очередь это касается различных операций над множествами, например, пересечения или объединения.\nЭто не значит, что нужно знать эту теорию от и до.\nНапротив, достаточно изучить ее основные понятия и некоторые операции.\nЭтого хватит для эффективного решения подавляющего числа задач.\nСама теория множеств относится к интуитивно понятным концепциям.\nОна хорошо ложится на здравый смысл и понятна людям даже без особой математической подготовки.",[406,410,411,415,416,421,422,425],{},[412,413,414],"strong",{},"Множеством"," обозначают набор объектов произвольной природы, который рассматривается как единое целое.\nПростейший пример — цифры. Множество всех цифр включает в себя 10 элементов (от 0 до 9).\nНо не каждый набор объектов можно назвать множеством.\nСуществует важное условие – все элементы множества должны быть уникальными.\nНапример, числа 1, 1 и 3 не могут называться множеством, а 1, 3, 5 могут.\nМножества между собой могут находиться в определенных отношениях.\nНапример, множество натуральных чисел является подмножеством целых чисел, которые в свою очередь являются подмножеством рациональных чисел и так далее.\nПонятие «подмножество» означает, что все элементы одного множества также входят в другое множество, называемое надмножеством.\n",[417,418],"img",{"alt":419,"src":420},"Множества чисел","\u002Fimages\u002Fblog\u002Fpython\u002Fst15\u002Fimg1.png","\nПредставление множеств кружками довольно удобно. Можно быстро оценить как друг с другом соотносятся разные множества.\nНо математические объекты, такие как числа, не единственные возможные объекты множеств.\nМножеством можно назвать группу людей, стоящих на остановке в ожидании своего автобуса, или жильцов квартир одного дома, города или страны.\nВ программировании в качестве множеств могут выступать списки и таблицы в базе данных.\nВ Python для представления множеств есть встроенный тип ",[412,423,424],{},"set",".",[427,428,430],"h4",{"id":429},"операции-над-множествами","Операции над множествами",[406,432,433,434,425],{},"На практике представление данных в виде множеств полезно тогда, когда мы хотим что-то сделать с ними.\nПростой пример. Когда во Вконтакте вы заходите на страницу другого человека, то Вконтакте показывает вам блок с общими друзьями.\nЕсли принять, что ваши друзья и друзья вашего друга — два множества, то общие друзья — множество, полученное как пересечение исходных множеств друзей.\nПересечение — один из ярких примеров операции над множествами, которая в программировании встречается повсеместно.\nТо же самое можно сказать и о некоторых других операциях.\nВажно, что результатом всех этих операций являются множества, а значит они подчиняются тем же правилам, что и исходные множества.\nНапример, сохраняется уникальность элементов.\nВ Python нет встроенных методов для работы со списками как с множествами.\nПоэтому мы используем библиотеку ",[412,435,436],{},"pydash",[438,439,441],"h5",{"id":440},"пересечение","Пересечение",[406,443,444],{},"Пересечением множеств называется множество, в которое входят элементы, встречающиеся во всех данных множествах одновременно.\nПример с общими друзьями:",[446,447,452],"pre",{"className":448,"code":449,"language":450,"meta":451,"style":451},"language-python shiki shiki-themes github-light","import pydash.arrays as ar\n\n# Друзья одного человека\nfriends1 = ['Вася', 'Коля', 'Петя']\n# Друзья другого человека\nfriends2 = ['Игорь', 'Петя', 'Сергей', 'Вася', 'Саша']\n# Общие друзья\ncommon_friends = ar.intersection(friends1, friends2)\n\nprint(common_friends)  # ['Вася', 'Петя']\n","python","",[453,454,455,474,481,488,518,524,557,563,574,579],"code",{"__ignoreMap":451},[456,457,460,464,468,471],"span",{"class":458,"line":459},"line",1,[456,461,463],{"class":462},"sD7c4","import",[456,465,467],{"class":466},"sgsFI"," pydash.arrays ",[456,469,470],{"class":462},"as",[456,472,473],{"class":466}," ar\n",[456,475,477],{"class":458,"line":476},2,[456,478,480],{"emptyLinePlaceholder":479},true,"\n",[456,482,484],{"class":458,"line":483},3,[456,485,487],{"class":486},"sAwPA","# Друзья одного человека\n",[456,489,491,494,497,500,504,507,510,512,515],{"class":458,"line":490},4,[456,492,493],{"class":466},"friends1 ",[456,495,496],{"class":462},"=",[456,498,499],{"class":466}," [",[456,501,503],{"class":502},"sYBdl","'Вася'",[456,505,506],{"class":466},", ",[456,508,509],{"class":502},"'Коля'",[456,511,506],{"class":466},[456,513,514],{"class":502},"'Петя'",[456,516,517],{"class":466},"]\n",[456,519,521],{"class":458,"line":520},5,[456,522,523],{"class":486},"# Друзья другого человека\n",[456,525,527,530,532,534,537,539,541,543,546,548,550,552,555],{"class":458,"line":526},6,[456,528,529],{"class":466},"friends2 ",[456,531,496],{"class":462},[456,533,499],{"class":466},[456,535,536],{"class":502},"'Игорь'",[456,538,506],{"class":466},[456,540,514],{"class":502},[456,542,506],{"class":466},[456,544,545],{"class":502},"'Сергей'",[456,547,506],{"class":466},[456,549,503],{"class":502},[456,551,506],{"class":466},[456,553,554],{"class":502},"'Саша'",[456,556,517],{"class":466},[456,558,560],{"class":458,"line":559},7,[456,561,562],{"class":486},"# Общие друзья\n",[456,564,566,569,571],{"class":458,"line":565},8,[456,567,568],{"class":466},"common_friends ",[456,570,496],{"class":462},[456,572,573],{"class":466}," ar.intersection(friends1, friends2)\n",[456,575,577],{"class":458,"line":576},9,[456,578,480],{"emptyLinePlaceholder":479},[456,580,582,586,589],{"class":458,"line":581},10,[456,583,585],{"class":584},"sYu0t","print",[456,587,588],{"class":466},"(common_friends)  ",[456,590,591],{"class":486},"# ['Вася', 'Петя']\n",[438,593,595],{"id":594},"объединение","Объединение",[406,597,598],{},"Объединением множеств называется множество, в которое входят элементы всех данных множеств.",[446,600,602],{"className":448,"code":601,"language":450,"meta":451,"style":451},"import pydash.arrays as ar\n\nfriends1 = ['Вася', 'Коля', 'Петя']\nfriends2 = ['Игорь', 'Петя', 'Сергей', 'Вася', 'Саша']\n\nprint(ar.union(friends1, friends2)) # => ['Вася', 'Коля', 'Петя', 'Игорь', 'Сергей', 'Саша']\n",[453,603,604,614,618,638,666,670],{"__ignoreMap":451},[456,605,606,608,610,612],{"class":458,"line":459},[456,607,463],{"class":462},[456,609,467],{"class":466},[456,611,470],{"class":462},[456,613,473],{"class":466},[456,615,616],{"class":458,"line":476},[456,617,480],{"emptyLinePlaceholder":479},[456,619,620,622,624,626,628,630,632,634,636],{"class":458,"line":483},[456,621,493],{"class":466},[456,623,496],{"class":462},[456,625,499],{"class":466},[456,627,503],{"class":502},[456,629,506],{"class":466},[456,631,509],{"class":502},[456,633,506],{"class":466},[456,635,514],{"class":502},[456,637,517],{"class":466},[456,639,640,642,644,646,648,650,652,654,656,658,660,662,664],{"class":458,"line":490},[456,641,529],{"class":466},[456,643,496],{"class":462},[456,645,499],{"class":466},[456,647,536],{"class":502},[456,649,506],{"class":466},[456,651,514],{"class":502},[456,653,506],{"class":466},[456,655,545],{"class":502},[456,657,506],{"class":466},[456,659,503],{"class":502},[456,661,506],{"class":466},[456,663,554],{"class":502},[456,665,517],{"class":466},[456,667,668],{"class":458,"line":520},[456,669,480],{"emptyLinePlaceholder":479},[456,671,672,674,677],{"class":458,"line":526},[456,673,585],{"class":584},[456,675,676],{"class":466},"(ar.union(friends1, friends2)) ",[456,678,679],{"class":486},"# => ['Вася', 'Коля', 'Петя', 'Игорь', 'Сергей', 'Саша']\n",[406,681,682],{},[683,684,685],"em",{},"Каждый друг в объединении встречается ровно один раз.",[438,687,689],{"id":688},"разность","Разность",[406,691,692],{},"Разностью двух множеств называется множество, в которое входят элементы первого множества, не входящие во второе.\nВ программировании такая операция часто называется diff (разница).",[446,694,696],{"className":448,"code":695,"language":450,"meta":451,"style":451},"import pydash.arrays as ar\n\nfriends1 = ['Вася', 'Коля', 'Петя']\nfriends2 = ['Игорь', 'Петя', 'Сергей', 'Вася', 'Саша']\n\nprint(ar.difference(friends1, friends2)) # => ['Коля']\n",[453,697,698,708,712,732,760,764],{"__ignoreMap":451},[456,699,700,702,704,706],{"class":458,"line":459},[456,701,463],{"class":462},[456,703,467],{"class":466},[456,705,470],{"class":462},[456,707,473],{"class":466},[456,709,710],{"class":458,"line":476},[456,711,480],{"emptyLinePlaceholder":479},[456,713,714,716,718,720,722,724,726,728,730],{"class":458,"line":483},[456,715,493],{"class":466},[456,717,496],{"class":462},[456,719,499],{"class":466},[456,721,503],{"class":502},[456,723,506],{"class":466},[456,725,509],{"class":502},[456,727,506],{"class":466},[456,729,514],{"class":502},[456,731,517],{"class":466},[456,733,734,736,738,740,742,744,746,748,750,752,754,756,758],{"class":458,"line":490},[456,735,529],{"class":466},[456,737,496],{"class":462},[456,739,499],{"class":466},[456,741,536],{"class":502},[456,743,506],{"class":466},[456,745,514],{"class":502},[456,747,506],{"class":466},[456,749,545],{"class":502},[456,751,506],{"class":466},[456,753,503],{"class":502},[456,755,506],{"class":466},[456,757,554],{"class":502},[456,759,517],{"class":466},[456,761,762],{"class":458,"line":520},[456,763,480],{"emptyLinePlaceholder":479},[456,765,766,768,771],{"class":458,"line":526},[456,767,585],{"class":584},[456,769,770],{"class":466},"(ar.difference(friends1, friends2)) ",[456,772,773],{"class":486},"# => ['Коля']\n",[438,775,777],{"id":776},"принадлежность-множеству","Принадлежность множеству",[406,779,780,781,784],{},"Проверку принадлежности элемента множеству можно выполнить с помощью встроенного оператора ",[453,782,783],{},"in",":",[446,786,788],{"className":448,"code":787,"language":450,"meta":451,"style":451},"numbers = [4, 13, 21]\nprint(13 in numbers) # => True\nprint(5 in numbers) # => False\n",[453,789,790,814,832],{"__ignoreMap":451},[456,791,792,795,797,799,802,804,807,809,812],{"class":458,"line":459},[456,793,794],{"class":466},"numbers ",[456,796,496],{"class":462},[456,798,499],{"class":466},[456,800,801],{"class":584},"4",[456,803,506],{"class":466},[456,805,806],{"class":584},"13",[456,808,506],{"class":466},[456,810,811],{"class":584},"21",[456,813,517],{"class":466},[456,815,816,818,821,823,826,829],{"class":458,"line":476},[456,817,585],{"class":584},[456,819,820],{"class":466},"(",[456,822,806],{"class":584},[456,824,825],{"class":462}," in",[456,827,828],{"class":466}," numbers) ",[456,830,831],{"class":486},"# => True\n",[456,833,834,836,838,841,843,845],{"class":458,"line":483},[456,835,585],{"class":584},[456,837,820],{"class":466},[456,839,840],{"class":584},"5",[456,842,825],{"class":462},[456,844,828],{"class":466},[456,846,847],{"class":486},"# => False\n",[401,849,851],{"id":850},"управляющие-инструкции","Управляющие инструкции",[406,853,854],{},"В циклах Python доступны для использования две инструкции, влияющие на их поведение: break и continue.\nИх использование не является необходимым, но все же они встречаются на практике. Поэтому про них нужно знать.",[427,856,858],{"id":857},"break","Break",[406,860,861],{},"Инструкция break производит выход из цикла. Не из функции, а из цикла.\nВстретив ее, интерпретатор перестает выполнять текущий цикл и переходит к инструкциям, идущим сразу за циклом.",[446,863,865],{"className":448,"code":864,"language":450,"meta":451,"style":451},"coll = ['1', '2', '3', '4', 'stop', '6']\n\nfor item in coll:\n  if item == 'stop':\n    break\n  print(item)\n\n# => 1\n# => 2\n# => 3\n# => 4\n",[453,866,867,906,910,923,939,944,952,956,961,966,971],{"__ignoreMap":451},[456,868,869,872,874,876,879,881,884,886,889,891,894,896,899,901,904],{"class":458,"line":459},[456,870,871],{"class":466},"coll ",[456,873,496],{"class":462},[456,875,499],{"class":466},[456,877,878],{"class":502},"'1'",[456,880,506],{"class":466},[456,882,883],{"class":502},"'2'",[456,885,506],{"class":466},[456,887,888],{"class":502},"'3'",[456,890,506],{"class":466},[456,892,893],{"class":502},"'4'",[456,895,506],{"class":466},[456,897,898],{"class":502},"'stop'",[456,900,506],{"class":466},[456,902,903],{"class":502},"'6'",[456,905,517],{"class":466},[456,907,908],{"class":458,"line":476},[456,909,480],{"emptyLinePlaceholder":479},[456,911,912,915,918,920],{"class":458,"line":483},[456,913,914],{"class":462},"for",[456,916,917],{"class":466}," item ",[456,919,783],{"class":462},[456,921,922],{"class":466}," coll:\n",[456,924,925,928,930,933,936],{"class":458,"line":490},[456,926,927],{"class":462},"  if",[456,929,917],{"class":466},[456,931,932],{"class":462},"==",[456,934,935],{"class":502}," 'stop'",[456,937,938],{"class":466},":\n",[456,940,941],{"class":458,"line":520},[456,942,943],{"class":462},"    break\n",[456,945,946,949],{"class":458,"line":526},[456,947,948],{"class":584},"  print",[456,950,951],{"class":466},"(item)\n",[456,953,954],{"class":458,"line":559},[456,955,480],{"emptyLinePlaceholder":479},[456,957,958],{"class":458,"line":565},[456,959,960],{"class":486},"# => 1\n",[456,962,963],{"class":458,"line":576},[456,964,965],{"class":486},"# => 2\n",[456,967,968],{"class":458,"line":581},[456,969,970],{"class":486},"# => 3\n",[456,972,974],{"class":458,"line":973},11,[456,975,976],{"class":486},"# => 4\n",[406,978,979,980,989],{},"То же самое легко получить ",[683,981,982,983,985,986],{},"без ",[412,984,857],{},", используя цикл ",[412,987,988],{},"while",".\nЭтот цикл семантически лучше подходит для такой задачи, так как подразумевает неполный перебор:",[446,991,993],{"className":448,"code":992,"language":450,"meta":451,"style":451},"coll = ['1', '2', '3', '4', 'stop', '6']\n\ni = 0\nwhile coll[i] != 'stop':\n  print(coll[i])\n  i += 1\n\n# => 1\n# => 2\n# => 3\n# => 4\n",[453,994,995,1027,1031,1041,1055,1062,1073,1077,1081,1085,1089],{"__ignoreMap":451},[456,996,997,999,1001,1003,1005,1007,1009,1011,1013,1015,1017,1019,1021,1023,1025],{"class":458,"line":459},[456,998,871],{"class":466},[456,1000,496],{"class":462},[456,1002,499],{"class":466},[456,1004,878],{"class":502},[456,1006,506],{"class":466},[456,1008,883],{"class":502},[456,1010,506],{"class":466},[456,1012,888],{"class":502},[456,1014,506],{"class":466},[456,1016,893],{"class":502},[456,1018,506],{"class":466},[456,1020,898],{"class":502},[456,1022,506],{"class":466},[456,1024,903],{"class":502},[456,1026,517],{"class":466},[456,1028,1029],{"class":458,"line":476},[456,1030,480],{"emptyLinePlaceholder":479},[456,1032,1033,1036,1038],{"class":458,"line":483},[456,1034,1035],{"class":466},"i ",[456,1037,496],{"class":462},[456,1039,1040],{"class":584}," 0\n",[456,1042,1043,1045,1048,1051,1053],{"class":458,"line":490},[456,1044,988],{"class":462},[456,1046,1047],{"class":466}," coll[i] ",[456,1049,1050],{"class":462},"!=",[456,1052,935],{"class":502},[456,1054,938],{"class":466},[456,1056,1057,1059],{"class":458,"line":520},[456,1058,948],{"class":584},[456,1060,1061],{"class":466},"(coll[i])\n",[456,1063,1064,1067,1070],{"class":458,"line":526},[456,1065,1066],{"class":466},"  i ",[456,1068,1069],{"class":462},"+=",[456,1071,1072],{"class":584}," 1\n",[456,1074,1075],{"class":458,"line":559},[456,1076,480],{"emptyLinePlaceholder":479},[456,1078,1079],{"class":458,"line":565},[456,1080,960],{"class":486},[456,1082,1083],{"class":458,"line":576},[456,1084,965],{"class":486},[456,1086,1087],{"class":458,"line":581},[456,1088,970],{"class":486},[456,1090,1091],{"class":458,"line":973},[456,1092,976],{"class":486},[406,1094,1095],{},"Цикл while идеален для ситуаций, когда количество итераций неизвестно заранее.\nНапример, при ожидании условия для выхода или при поиске простого числа — как в коде выше.\nЕсли условие в цикле while будет истинным, то цикл будет бесконечным.\nВажно помнить об этом и всегда проверять условие в таком цикле:",[446,1097,1099],{"className":448,"code":1098,"language":450,"meta":451,"style":451},"i = 0\n# Бесконечный цикл! Опасно запускать!\nwhile True:\n  print(i)\n  i += 1\n",[453,1100,1101,1109,1114,1123,1130],{"__ignoreMap":451},[456,1102,1103,1105,1107],{"class":458,"line":459},[456,1104,1035],{"class":466},[456,1106,496],{"class":462},[456,1108,1040],{"class":584},[456,1110,1111],{"class":458,"line":476},[456,1112,1113],{"class":486},"# Бесконечный цикл! Опасно запускать!\n",[456,1115,1116,1118,1121],{"class":458,"line":483},[456,1117,988],{"class":462},[456,1119,1120],{"class":584}," True",[456,1122,938],{"class":466},[456,1124,1125,1127],{"class":458,"line":490},[456,1126,948],{"class":584},[456,1128,1129],{"class":466},"(i)\n",[456,1131,1132,1134,1136],{"class":458,"line":520},[456,1133,1066],{"class":466},[456,1135,1069],{"class":462},[456,1137,1072],{"class":584},[406,1139,1140,1141,1143,1144,1146,1147,1150,1151,1153],{},"Когда количество итераций известно, предпочтительнее использовать цикл ",[453,1142,914],{},".\nВ отличие от ",[453,1145,988],{},", цикл ",[453,1148,1149],{},"for in"," гарантированно остановится после перебора всех элементов, даже если условие ",[453,1152,857],{}," не будет достигнуто:",[446,1155,1157],{"className":448,"code":1156,"language":450,"meta":451,"style":451},"coll = ['1', '2', '3', '4', '5']\nfor item in coll:\n  if False:\n    # Условие никогда не выполнится, но цикл все равно завершит работу\n    break\n  print(item)\n\n# => 1\n# => 2\n# => 3\n# => 4\n# => 5\n",[453,1158,1159,1188,1198,1207,1212,1216,1222,1226,1230,1234,1238,1242],{"__ignoreMap":451},[456,1160,1161,1163,1165,1167,1169,1171,1173,1175,1177,1179,1181,1183,1186],{"class":458,"line":459},[456,1162,871],{"class":466},[456,1164,496],{"class":462},[456,1166,499],{"class":466},[456,1168,878],{"class":502},[456,1170,506],{"class":466},[456,1172,883],{"class":502},[456,1174,506],{"class":466},[456,1176,888],{"class":502},[456,1178,506],{"class":466},[456,1180,893],{"class":502},[456,1182,506],{"class":466},[456,1184,1185],{"class":502},"'5'",[456,1187,517],{"class":466},[456,1189,1190,1192,1194,1196],{"class":458,"line":476},[456,1191,914],{"class":462},[456,1193,917],{"class":466},[456,1195,783],{"class":462},[456,1197,922],{"class":466},[456,1199,1200,1202,1205],{"class":458,"line":483},[456,1201,927],{"class":462},[456,1203,1204],{"class":584}," False",[456,1206,938],{"class":466},[456,1208,1209],{"class":458,"line":490},[456,1210,1211],{"class":486},"    # Условие никогда не выполнится, но цикл все равно завершит работу\n",[456,1213,1214],{"class":458,"line":520},[456,1215,943],{"class":462},[456,1217,1218,1220],{"class":458,"line":526},[456,1219,948],{"class":584},[456,1221,951],{"class":466},[456,1223,1224],{"class":458,"line":559},[456,1225,480],{"emptyLinePlaceholder":479},[456,1227,1228],{"class":458,"line":565},[456,1229,960],{"class":486},[456,1231,1232],{"class":458,"line":576},[456,1233,965],{"class":486},[456,1235,1236],{"class":458,"line":581},[456,1237,970],{"class":486},[456,1239,1240],{"class":458,"line":973},[456,1241,976],{"class":486},[456,1243,1245],{"class":458,"line":1244},12,[456,1246,1247],{"class":486},"# => 5\n",[406,1249,1250,1251,784],{},"Если же нам нужно совершить полезное действие, если условие в цикле ни разу не выполнилось, то на помощь придет инструкция ",[453,1252,1253],{},"else",[446,1255,1257],{"className":448,"code":1256,"language":450,"meta":451,"style":451},"# Функция возвращает первое число большее, чем переданное, или None, если такого нет\ndef first_greater(coll, n):\n  for item in coll:\n    if item > n:\n      # Условие никогда не выполнится, но цикл все равно завершит работу\n      result = item\n      break\n  else:\n    result = None\n  return result\n\nfirst_greater([1, 15, 25], 10) # 15\nfirst_greater([1, 15, 25], 42) # None\n",[453,1258,1259,1264,1276,1287,1300,1305,1315,1320,1327,1337,1345,1349,1379],{"__ignoreMap":451},[456,1260,1261],{"class":458,"line":459},[456,1262,1263],{"class":486},"# Функция возвращает первое число большее, чем переданное, или None, если такого нет\n",[456,1265,1266,1269,1273],{"class":458,"line":476},[456,1267,1268],{"class":462},"def",[456,1270,1272],{"class":1271},"s7eDp"," first_greater",[456,1274,1275],{"class":466},"(coll, n):\n",[456,1277,1278,1281,1283,1285],{"class":458,"line":483},[456,1279,1280],{"class":462},"  for",[456,1282,917],{"class":466},[456,1284,783],{"class":462},[456,1286,922],{"class":466},[456,1288,1289,1292,1294,1297],{"class":458,"line":490},[456,1290,1291],{"class":462},"    if",[456,1293,917],{"class":466},[456,1295,1296],{"class":462},">",[456,1298,1299],{"class":466}," n:\n",[456,1301,1302],{"class":458,"line":520},[456,1303,1304],{"class":486},"      # Условие никогда не выполнится, но цикл все равно завершит работу\n",[456,1306,1307,1310,1312],{"class":458,"line":526},[456,1308,1309],{"class":466},"      result ",[456,1311,496],{"class":462},[456,1313,1314],{"class":466}," item\n",[456,1316,1317],{"class":458,"line":559},[456,1318,1319],{"class":462},"      break\n",[456,1321,1322,1325],{"class":458,"line":565},[456,1323,1324],{"class":462},"  else",[456,1326,938],{"class":466},[456,1328,1329,1332,1334],{"class":458,"line":576},[456,1330,1331],{"class":466},"    result ",[456,1333,496],{"class":462},[456,1335,1336],{"class":584}," None\n",[456,1338,1339,1342],{"class":458,"line":581},[456,1340,1341],{"class":462},"  return",[456,1343,1344],{"class":466}," result\n",[456,1346,1347],{"class":458,"line":973},[456,1348,480],{"emptyLinePlaceholder":479},[456,1350,1351,1354,1357,1359,1362,1364,1367,1370,1373,1376],{"class":458,"line":1244},[456,1352,1353],{"class":466},"first_greater([",[456,1355,1356],{"class":584},"1",[456,1358,506],{"class":466},[456,1360,1361],{"class":584},"15",[456,1363,506],{"class":466},[456,1365,1366],{"class":584},"25",[456,1368,1369],{"class":466},"], ",[456,1371,1372],{"class":584},"10",[456,1374,1375],{"class":466},") ",[456,1377,1378],{"class":486},"# 15\n",[456,1380,1382,1384,1386,1388,1390,1392,1394,1396,1399,1401],{"class":458,"line":1381},13,[456,1383,1353],{"class":466},[456,1385,1356],{"class":584},[456,1387,506],{"class":466},[456,1389,1361],{"class":584},[456,1391,506],{"class":466},[456,1393,1366],{"class":584},[456,1395,1369],{"class":466},[456,1397,1398],{"class":584},"42",[456,1400,1375],{"class":466},[456,1402,1403],{"class":486},"# None\n",[427,1405,1407],{"id":1406},"continue","Continue",[406,1409,1410,1411,1413,1414,1416,1417,1419],{},"Инструкция ",[453,1412,1406],{}," позволяет пропустить итерацию цикла.\nЕсли ",[453,1415,857],{}," дает команду на прерывание, то ",[453,1418,1406],{}," действует более гибко.\nЕго функция заключается в пропуске определенных элементов последовательности, но без завершения цикла.\nДавайте напишем программу, которая «не любит» букву «А»:",[446,1421,1423],{"className":448,"code":1422,"language":450,"meta":451,"style":451},"word = input('Введите слово: ')\nfor i in word:\n    if i == 'а' or i == 'А':\n        continue\n    print(i)\n",[453,1424,1425,1443,1455,1478,1483],{"__ignoreMap":451},[456,1426,1427,1430,1432,1435,1437,1440],{"class":458,"line":459},[456,1428,1429],{"class":466},"word ",[456,1431,496],{"class":462},[456,1433,1434],{"class":584}," input",[456,1436,820],{"class":466},[456,1438,1439],{"class":502},"'Введите слово: '",[456,1441,1442],{"class":466},")\n",[456,1444,1445,1447,1450,1452],{"class":458,"line":476},[456,1446,914],{"class":462},[456,1448,1449],{"class":466}," i ",[456,1451,783],{"class":462},[456,1453,1454],{"class":466}," word:\n",[456,1456,1457,1459,1461,1463,1466,1469,1471,1473,1476],{"class":458,"line":483},[456,1458,1291],{"class":462},[456,1460,1449],{"class":466},[456,1462,932],{"class":462},[456,1464,1465],{"class":502}," 'а'",[456,1467,1468],{"class":462}," or",[456,1470,1449],{"class":466},[456,1472,932],{"class":462},[456,1474,1475],{"class":502}," 'А'",[456,1477,938],{"class":466},[456,1479,1480],{"class":458,"line":490},[456,1481,1482],{"class":462},"        continue\n",[456,1484,1485,1488],{"class":458,"line":520},[456,1486,1487],{"class":584},"    print",[456,1489,1129],{"class":466},[406,1491,1492],{},"Попробуйте ввести, например, «Автобус», в этом случае вывод будет таким:",[446,1494,1496],{"className":448,"code":1495,"language":450,"meta":451,"style":451},"в\nт\nо\nб\nу\nс\n",[453,1497,1498,1503,1508,1513,1518,1523],{"__ignoreMap":451},[456,1499,1500],{"class":458,"line":459},[456,1501,1502],{"class":466},"в\n",[456,1504,1505],{"class":458,"line":476},[456,1506,1507],{"class":466},"т\n",[456,1509,1510],{"class":458,"line":483},[456,1511,1512],{"class":466},"о\n",[456,1514,1515],{"class":458,"line":490},[456,1516,1517],{"class":466},"б\n",[456,1519,1520],{"class":458,"line":520},[456,1521,1522],{"class":466},"у\n",[456,1524,1525],{"class":458,"line":526},[456,1526,1527],{"class":466},"с\n",[427,1529,1531],{"id":1530},"pass","Pass",[406,1533,1534,1535,1537],{},"Назначение оператора ",[453,1536,1530],{}," — продолжение цикла независимо от наличия внешних условий.\nВ готовом коде pass встречается нечасто, но полезен в процессе разработки и применяется в качестве «заглушки» там, где код еще не написан.\nНапример, нам нужно не забыть добавить условие с буквой «а» из примера выше, но сам этот блок по какой-то причине мы пока не написали.\nЗдесь для корректной работы программы и поможет \"заглушка\" pass:",[446,1539,1541],{"className":448,"code":1540,"language":450,"meta":451,"style":451},"word = input('Введите слово: ')\nfor i in word:\n    if i == 'а' or i == 'А':\n        pass\nelse:\n    print('Цикл завершен, запрещенных букв не обнаружено')\nprint('Проверка завершена')\n",[453,1542,1543,1557,1567,1587,1592,1598,1609],{"__ignoreMap":451},[456,1544,1545,1547,1549,1551,1553,1555],{"class":458,"line":459},[456,1546,1429],{"class":466},[456,1548,496],{"class":462},[456,1550,1434],{"class":584},[456,1552,820],{"class":466},[456,1554,1439],{"class":502},[456,1556,1442],{"class":466},[456,1558,1559,1561,1563,1565],{"class":458,"line":476},[456,1560,914],{"class":462},[456,1562,1449],{"class":466},[456,1564,783],{"class":462},[456,1566,1454],{"class":466},[456,1568,1569,1571,1573,1575,1577,1579,1581,1583,1585],{"class":458,"line":483},[456,1570,1291],{"class":462},[456,1572,1449],{"class":466},[456,1574,932],{"class":462},[456,1576,1465],{"class":502},[456,1578,1468],{"class":462},[456,1580,1449],{"class":466},[456,1582,932],{"class":462},[456,1584,1475],{"class":502},[456,1586,938],{"class":466},[456,1588,1589],{"class":458,"line":490},[456,1590,1591],{"class":462},"        pass\n",[456,1593,1594,1596],{"class":458,"line":520},[456,1595,1253],{"class":462},[456,1597,938],{"class":466},[456,1599,1600,1602,1604,1607],{"class":458,"line":526},[456,1601,1487],{"class":584},[456,1603,820],{"class":466},[456,1605,1606],{"class":502},"'Цикл завершен, запрещенных букв не обнаружено'",[456,1608,1442],{"class":466},[456,1610,1611,1613,1615,1618],{"class":458,"line":559},[456,1612,585],{"class":584},[456,1614,820],{"class":466},[456,1616,1617],{"class":502},"'Проверка завершена'",[456,1619,1442],{"class":466},[401,1621,1623],{"id":1622},"вложенные-списки","Вложенные списки",[406,1625,1626],{},"Значением списка может быть все что угодно, в том числе другой список. Создать список в списке можно так:",[446,1628,1630],{"className":448,"code":1629,"language":450,"meta":451,"style":451},"nested1 = [[3]]\nprint(len(nested1)) # => 1\nnested2 = [1, [3, 2], [3, [4]]]\nprint(len(nested2)) # => 3\n",[453,1631,1632,1648,1662,1695],{"__ignoreMap":451},[456,1633,1634,1637,1639,1642,1645],{"class":458,"line":459},[456,1635,1636],{"class":466},"nested1 ",[456,1638,496],{"class":462},[456,1640,1641],{"class":466}," [[",[456,1643,1644],{"class":584},"3",[456,1646,1647],{"class":466},"]]\n",[456,1649,1650,1652,1654,1657,1660],{"class":458,"line":476},[456,1651,585],{"class":584},[456,1653,820],{"class":466},[456,1655,1656],{"class":584},"len",[456,1658,1659],{"class":466},"(nested1)) ",[456,1661,960],{"class":486},[456,1663,1664,1667,1669,1671,1673,1676,1678,1680,1683,1686,1688,1690,1692],{"class":458,"line":483},[456,1665,1666],{"class":466},"nested2 ",[456,1668,496],{"class":462},[456,1670,499],{"class":466},[456,1672,1356],{"class":584},[456,1674,1675],{"class":466},", [",[456,1677,1644],{"class":584},[456,1679,506],{"class":466},[456,1681,1682],{"class":584},"2",[456,1684,1685],{"class":466},"], [",[456,1687,1644],{"class":584},[456,1689,1675],{"class":466},[456,1691,801],{"class":584},[456,1693,1694],{"class":466},"]]]\n",[456,1696,1697,1699,1701,1703,1706],{"class":458,"line":490},[456,1698,585],{"class":584},[456,1700,820],{"class":466},[456,1702,1656],{"class":584},[456,1704,1705],{"class":466},"(nested2)) ",[456,1707,970],{"class":486},[406,1709,1710],{},"Каждый элемент, являющийся списком, рассматривается как единое целое. Это видно по размеру второго списка.\nСинтаксис Python позволяет размещать элементы создаваемого списка построчно.\nПерепишем для наглядности создание второго списка:",[446,1712,1714],{"className":448,"code":1713,"language":450,"meta":451,"style":451},"data2 = [\n  1,        # первый элемент (число)\n  [3, 2],   # второй элемент (список)\n  [3, [4]], # третий элемент (список)\n]\nlen(data2) # 3\n",[453,1715,1716,1726,1737,1754,1770,1774],{"__ignoreMap":451},[456,1717,1718,1721,1723],{"class":458,"line":459},[456,1719,1720],{"class":466},"data2 ",[456,1722,496],{"class":462},[456,1724,1725],{"class":466}," [\n",[456,1727,1728,1731,1734],{"class":458,"line":476},[456,1729,1730],{"class":584},"  1",[456,1732,1733],{"class":466},",        ",[456,1735,1736],{"class":486},"# первый элемент (число)\n",[456,1738,1739,1742,1744,1746,1748,1751],{"class":458,"line":483},[456,1740,1741],{"class":466},"  [",[456,1743,1644],{"class":584},[456,1745,506],{"class":466},[456,1747,1682],{"class":584},[456,1749,1750],{"class":466},"],   ",[456,1752,1753],{"class":486},"# второй элемент (список)\n",[456,1755,1756,1758,1760,1762,1764,1767],{"class":458,"line":490},[456,1757,1741],{"class":466},[456,1759,1644],{"class":584},[456,1761,1675],{"class":466},[456,1763,801],{"class":584},[456,1765,1766],{"class":466},"]], ",[456,1768,1769],{"class":486},"# третий элемент (список)\n",[456,1771,1772],{"class":458,"line":520},[456,1773,517],{"class":466},[456,1775,1776,1778,1781],{"class":458,"line":526},[456,1777,1656],{"class":584},[456,1779,1780],{"class":466},"(data2) ",[456,1782,1783],{"class":486},"# 3\n",[406,1785,1786],{},"Вложенность никак не ограничивается. Можно создавать список списков со списками внутри и так далее.\nОбращение ко вложенным спискам выглядит немного необычно, хотя и логично:",[446,1788,1790],{"className":448,"code":1789,"language":450,"meta":451,"style":451},"data1 = [[3]]\ndata1[0][0] # 3\ndata2 = [1, [3, 2], [3, [4]]]\ndata2[2][1][0] # 4\n",[453,1791,1792,1805,1823,1851],{"__ignoreMap":451},[456,1793,1794,1797,1799,1801,1803],{"class":458,"line":459},[456,1795,1796],{"class":466},"data1 ",[456,1798,496],{"class":462},[456,1800,1641],{"class":466},[456,1802,1644],{"class":584},[456,1804,1647],{"class":466},[456,1806,1807,1810,1813,1816,1818,1821],{"class":458,"line":476},[456,1808,1809],{"class":466},"data1[",[456,1811,1812],{"class":584},"0",[456,1814,1815],{"class":466},"][",[456,1817,1812],{"class":584},[456,1819,1820],{"class":466},"] ",[456,1822,1783],{"class":486},[456,1824,1825,1827,1829,1831,1833,1835,1837,1839,1841,1843,1845,1847,1849],{"class":458,"line":483},[456,1826,1720],{"class":466},[456,1828,496],{"class":462},[456,1830,499],{"class":466},[456,1832,1356],{"class":584},[456,1834,1675],{"class":466},[456,1836,1644],{"class":584},[456,1838,506],{"class":466},[456,1840,1682],{"class":584},[456,1842,1685],{"class":466},[456,1844,1644],{"class":584},[456,1846,1675],{"class":466},[456,1848,801],{"class":584},[456,1850,1694],{"class":466},[456,1852,1853,1856,1858,1860,1862,1864,1866,1868],{"class":458,"line":490},[456,1854,1855],{"class":466},"data2[",[456,1857,1682],{"class":584},[456,1859,1815],{"class":466},[456,1861,1356],{"class":584},[456,1863,1815],{"class":466},[456,1865,1812],{"class":584},[456,1867,1820],{"class":466},[456,1869,1870],{"class":486},"# 4\n",[406,1872,1873],{},"Возможно, с непривычки вы не всегда сразу точно увидите, как добраться до нужного элемента, но это всего лишь вопрос тренировок:",[446,1875,1877],{"className":448,"code":1876,"language":450,"meta":451,"style":451},"data2 = [\n  1,\n  [3, 2],\n  [3, [4]],\n]\ndata2[2]       # [3, [4]]\ndata2[2][1]    # [4]\ndata2[2][1][0] # 4\n",[453,1878,1879,1887,1894,1907,1920,1924,1936,1952],{"__ignoreMap":451},[456,1880,1881,1883,1885],{"class":458,"line":459},[456,1882,1720],{"class":466},[456,1884,496],{"class":462},[456,1886,1725],{"class":466},[456,1888,1889,1891],{"class":458,"line":476},[456,1890,1730],{"class":584},[456,1892,1893],{"class":466},",\n",[456,1895,1896,1898,1900,1902,1904],{"class":458,"line":483},[456,1897,1741],{"class":466},[456,1899,1644],{"class":584},[456,1901,506],{"class":466},[456,1903,1682],{"class":584},[456,1905,1906],{"class":466},"],\n",[456,1908,1909,1911,1913,1915,1917],{"class":458,"line":490},[456,1910,1741],{"class":466},[456,1912,1644],{"class":584},[456,1914,1675],{"class":466},[456,1916,801],{"class":584},[456,1918,1919],{"class":466},"]],\n",[456,1921,1922],{"class":458,"line":520},[456,1923,517],{"class":466},[456,1925,1926,1928,1930,1933],{"class":458,"line":526},[456,1927,1855],{"class":466},[456,1929,1682],{"class":584},[456,1931,1932],{"class":466},"]       ",[456,1934,1935],{"class":486},"# [3, [4]]\n",[456,1937,1938,1940,1942,1944,1946,1949],{"class":458,"line":559},[456,1939,1855],{"class":466},[456,1941,1682],{"class":584},[456,1943,1815],{"class":466},[456,1945,1356],{"class":584},[456,1947,1948],{"class":466},"]    ",[456,1950,1951],{"class":486},"# [4]\n",[456,1953,1954,1956,1958,1960,1962,1964,1966,1968],{"class":458,"line":565},[456,1955,1855],{"class":466},[456,1957,1682],{"class":584},[456,1959,1815],{"class":466},[456,1961,1356],{"class":584},[456,1963,1815],{"class":466},[456,1965,1812],{"class":584},[456,1967,1820],{"class":466},[456,1969,1870],{"class":486},[406,1971,1972],{},"Изменение и добавление списков в список:",[446,1974,1976],{"className":448,"code":1975,"language":450,"meta":451,"style":451},"data1 = [[3]]\ndata1[0] = [2, 10]\ndata1.append([3, 4, 5]) # [[2, 10], [3, 4, 5]]\n",[453,1977,1978,1990,2010],{"__ignoreMap":451},[456,1979,1980,1982,1984,1986,1988],{"class":458,"line":459},[456,1981,1796],{"class":466},[456,1983,496],{"class":462},[456,1985,1641],{"class":466},[456,1987,1644],{"class":584},[456,1989,1647],{"class":466},[456,1991,1992,1994,1996,1998,2000,2002,2004,2006,2008],{"class":458,"line":476},[456,1993,1809],{"class":466},[456,1995,1812],{"class":584},[456,1997,1820],{"class":466},[456,1999,496],{"class":462},[456,2001,499],{"class":466},[456,2003,1682],{"class":584},[456,2005,506],{"class":466},[456,2007,1372],{"class":584},[456,2009,517],{"class":466},[456,2011,2012,2015,2017,2019,2021,2023,2025,2028],{"class":458,"line":483},[456,2013,2014],{"class":466},"data1.append([",[456,2016,1644],{"class":584},[456,2018,506],{"class":466},[456,2020,801],{"class":584},[456,2022,506],{"class":466},[456,2024,840],{"class":584},[456,2026,2027],{"class":466},"]) ",[456,2029,2030],{"class":486},"# [[2, 10], [3, 4, 5]]\n",[406,2032,2033],{},"Вложенные списки можно изменять напрямую, просто обратившись к нужному элементу:",[446,2035,2037],{"className":448,"code":2036,"language":450,"meta":451,"style":451},"data1 = [[3]]\ndata1[0][0] = 5 # [[5]]\n",[453,2038,2039,2051],{"__ignoreMap":451},[456,2040,2041,2043,2045,2047,2049],{"class":458,"line":459},[456,2042,1796],{"class":466},[456,2044,496],{"class":462},[456,2046,1641],{"class":466},[456,2048,1644],{"class":584},[456,2050,1647],{"class":466},[456,2052,2053,2055,2057,2059,2061,2063,2065,2068],{"class":458,"line":476},[456,2054,1809],{"class":466},[456,2056,1812],{"class":584},[456,2058,1815],{"class":466},[456,2060,1812],{"class":584},[456,2062,1820],{"class":466},[456,2064,496],{"class":462},[456,2066,2067],{"class":584}," 5",[456,2069,2070],{"class":486}," # [[5]]\n",[406,2072,2073],{},"То же самое касается и добавления нового элемента:",[446,2075,2077],{"className":448,"code":2076,"language":450,"meta":451,"style":451},"data1 = [[3]]\ndata1[0].append(10) # [[3, 10]]\n",[453,2078,2079,2091],{"__ignoreMap":451},[456,2080,2081,2083,2085,2087,2089],{"class":458,"line":459},[456,2082,1796],{"class":466},[456,2084,496],{"class":462},[456,2086,1641],{"class":466},[456,2088,1644],{"class":584},[456,2090,1647],{"class":466},[456,2092,2093,2095,2097,2100,2102,2104],{"class":458,"line":476},[456,2094,1809],{"class":466},[456,2096,1812],{"class":584},[456,2098,2099],{"class":466},"].append(",[456,2101,1372],{"class":584},[456,2103,1375],{"class":466},[456,2105,2106],{"class":486},"# [[3, 10]]\n",[406,2108,2109],{},"Для чего же могут понадобиться вложенные списки?\nТаких примеров довольно много: начиная от математических концепций, например, матриц, заканчивая представлением игровых полей.\nПомните игру крестики-нолики? Это как раз тот самый случай.\nРазберем такую задачку: дано игровое поле для крестиков-ноликов.\nНужно написать функцию, которая проверяет, есть ли на этом поле хотя бы один крестик или нолик, в зависимости от того, что попросят проверить.",[446,2111,2113],{"className":448,"code":2112,"language":450,"meta":451,"style":451},"# Инициализируем поле\nfield = [\n  [None, None, None],\n  [None, None, None],\n  [None, None, None],\n]\n\n# Делаем ход:\nfield[1][2] = 'x'\n# [\n#     [None, None, None],\n#     [None, None, 'x'],\n#     [None, None, None],\n# ]\n",[453,2114,2115,2120,2129,2146,2162,2178,2182,2186,2191,2209,2214,2219,2224,2228],{"__ignoreMap":451},[456,2116,2117],{"class":458,"line":459},[456,2118,2119],{"class":486},"# Инициализируем поле\n",[456,2121,2122,2125,2127],{"class":458,"line":476},[456,2123,2124],{"class":466},"field ",[456,2126,496],{"class":462},[456,2128,1725],{"class":466},[456,2130,2131,2133,2136,2138,2140,2142,2144],{"class":458,"line":483},[456,2132,1741],{"class":466},[456,2134,2135],{"class":584},"None",[456,2137,506],{"class":466},[456,2139,2135],{"class":584},[456,2141,506],{"class":466},[456,2143,2135],{"class":584},[456,2145,1906],{"class":466},[456,2147,2148,2150,2152,2154,2156,2158,2160],{"class":458,"line":490},[456,2149,1741],{"class":466},[456,2151,2135],{"class":584},[456,2153,506],{"class":466},[456,2155,2135],{"class":584},[456,2157,506],{"class":466},[456,2159,2135],{"class":584},[456,2161,1906],{"class":466},[456,2163,2164,2166,2168,2170,2172,2174,2176],{"class":458,"line":520},[456,2165,1741],{"class":466},[456,2167,2135],{"class":584},[456,2169,506],{"class":466},[456,2171,2135],{"class":584},[456,2173,506],{"class":466},[456,2175,2135],{"class":584},[456,2177,1906],{"class":466},[456,2179,2180],{"class":458,"line":526},[456,2181,517],{"class":466},[456,2183,2184],{"class":458,"line":559},[456,2185,480],{"emptyLinePlaceholder":479},[456,2187,2188],{"class":458,"line":565},[456,2189,2190],{"class":486},"# Делаем ход:\n",[456,2192,2193,2196,2198,2200,2202,2204,2206],{"class":458,"line":576},[456,2194,2195],{"class":466},"field[",[456,2197,1356],{"class":584},[456,2199,1815],{"class":466},[456,2201,1682],{"class":584},[456,2203,1820],{"class":466},[456,2205,496],{"class":462},[456,2207,2208],{"class":502}," 'x'\n",[456,2210,2211],{"class":458,"line":581},[456,2212,2213],{"class":486},"# [\n",[456,2215,2216],{"class":458,"line":973},[456,2217,2218],{"class":486},"#     [None, None, None],\n",[456,2220,2221],{"class":458,"line":1244},[456,2222,2223],{"class":486},"#     [None, None, 'x'],\n",[456,2225,2226],{"class":458,"line":1381},[456,2227,2218],{"class":486},[456,2229,2231],{"class":458,"line":2230},14,[456,2232,2233],{"class":486},"# ]\n",[406,2235,2236],{},"Теперь реализуем функцию, которая выполняет проверку:",[446,2238,2240],{"className":448,"code":2239,"language":450,"meta":451,"style":451},"def has_player_move(field, symbol):\n  # Обходим поле. Каждый элемент — это строчка в игровом поле.\n  for row in field:\n    # оператор in проверяет присутствует ли элемент в списке,\n    if symbol in row: # Если присутствует, значит мы нашли то, что искали.\n      return True\n  # Если поле было просмотрено, но ничего не нашли,\n  # значит ходов не было.\n  return False\n",[453,2241,2242,2252,2257,2269,2274,2289,2297,2302,2307],{"__ignoreMap":451},[456,2243,2244,2246,2249],{"class":458,"line":459},[456,2245,1268],{"class":462},[456,2247,2248],{"class":1271}," has_player_move",[456,2250,2251],{"class":466},"(field, symbol):\n",[456,2253,2254],{"class":458,"line":476},[456,2255,2256],{"class":486},"  # Обходим поле. Каждый элемент — это строчка в игровом поле.\n",[456,2258,2259,2261,2264,2266],{"class":458,"line":483},[456,2260,1280],{"class":462},[456,2262,2263],{"class":466}," row ",[456,2265,783],{"class":462},[456,2267,2268],{"class":466}," field:\n",[456,2270,2271],{"class":458,"line":490},[456,2272,2273],{"class":486},"    # оператор in проверяет присутствует ли элемент в списке,\n",[456,2275,2276,2278,2281,2283,2286],{"class":458,"line":520},[456,2277,1291],{"class":462},[456,2279,2280],{"class":466}," symbol ",[456,2282,783],{"class":462},[456,2284,2285],{"class":466}," row: ",[456,2287,2288],{"class":486},"# Если присутствует, значит мы нашли то, что искали.\n",[456,2290,2291,2294],{"class":458,"line":526},[456,2292,2293],{"class":462},"      return",[456,2295,2296],{"class":584}," True\n",[456,2298,2299],{"class":458,"line":559},[456,2300,2301],{"class":486},"  # Если поле было просмотрено, но ничего не нашли,\n",[456,2303,2304],{"class":458,"line":565},[456,2305,2306],{"class":486},"  # значит ходов не было.\n",[456,2308,2309,2311],{"class":458,"line":576},[456,2310,1341],{"class":462},[456,2312,2313],{"class":584}," False\n",[406,2315,2316],{},"Проверим:",[446,2318,2320],{"className":448,"code":2319,"language":450,"meta":451,"style":451},"print(has_player_move(field, 'x'))  # True\n",[453,2321,2322],{"__ignoreMap":451},[456,2323,2324,2326,2329,2332,2335],{"class":458,"line":459},[456,2325,585],{"class":584},[456,2327,2328],{"class":466},"(has_player_move(field, ",[456,2330,2331],{"class":502},"'x'",[456,2333,2334],{"class":466},"))  ",[456,2336,2337],{"class":486},"# True\n",[406,2339,2340,2341,2344,2345,2348],{},"Попробуйте сами запустить код в окне ниже с интерпретатором Python и повторите примеры из статьи чтобы самим увидеть и понять как всё это работает.\nДля этого в ячейке с кодом нажмите клавиши на клавиатуре ",[412,2342,2343],{},"Shift+Enter"," или запустите код через ",[412,2346,2347],{},"кнопку Run"," по значку ▶.",[2350,2351],"jypiter",{},[2353,2354,2355],"style",{},"html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}",{"title":451,"searchDepth":476,"depth":520,"links":2357},[2358],{"id":399,"depth":476,"text":214,"children":2359},[2360,2368,2373],{"id":403,"depth":483,"text":404,"children":2361},[2362],{"id":429,"depth":490,"text":430,"children":2363},[2364,2365,2366,2367],{"id":440,"depth":520,"text":441},{"id":594,"depth":520,"text":595},{"id":688,"depth":520,"text":689},{"id":776,"depth":520,"text":777},{"id":850,"depth":483,"text":851,"children":2369},[2370,2371,2372],{"id":857,"depth":490,"text":858},{"id":1406,"depth":490,"text":1407},{"id":1530,"depth":490,"text":1531},{"id":1622,"depth":483,"text":1623},"2025-03-29","Списки как множества. Управляющие конструкции. Вложенные списки","md","images\u002Fblog\u002Fpython\u002Fst15\u002Fimg.png",{},17,15,{"title":214,"description":2375},"AEb325_e4FUDEV0s2LJy8CPLseVd_6wVXAD0glbF7LU",[2384,2386],{"title":210,"path":211,"stem":212,"description":2385,"children":-1},"Обход списков. Циклы с индексами для работы со списками. Обработка списков в функциях. Агрегация. Удаление элементов списка",{"title":218,"path":219,"stem":220,"description":2387,"children":-1},"Генерация строки в цикле. Обработка строк через преобразование в список. Вложенные циклы",1780737508955]