Найти самый парный элемент списка
Помогите пожалуйста найти самый парный элемент списка на python.
Список можео задать свой или рандомом.
Это мой код, но его легко загнать в тупик, если первый элемент в списке будет наибольшим, но не парным
1 2 3 4 5 6 7 8 9 10 11
import random list=[] for i in range(10): a=random.randint(1,10) list.append(a) print(list) b=list[0] for a in list: if a>b and a%2==0: b=a print("наибольшое и максимальное",b )
Лучшие ответы ( 2 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Меняет в последовательности самый левый минимальный элемент и самый правый максимальный элемент местами
Напишите программу, которая принимает последовательность чисел, после чего меняет в этой.
Задан одномерный массив А(8).Найти наибольший парный элемент, имеющий парный индекс
Задан одномерный массив А(8).Найти наибольший парный элемент, имеющий парный индекс.
Создать матрицу.Вывести самый меньший парный элемент
Создать матрицу.Вывести самый меньший парный элемент.Парный имеется ввиду который стоит к примеру.
Продублировать первый парный элемент списка
Задача продублировать первый парный элемент списка Вот код #include<iostream> #include<math.h>.
От каждой строки найти самый большой элемент и от каждого столбца найти самый меньшой элемент
Java в среде Netbians Дана двумерный массив A. От каждой строки найти самый большой элемент и от.
4459 / 3212 / 1125
Регистрация: 21.03.2016
Сообщений: 7,949
Сообщение было отмечено pavel23313r1 как решение
Решение
через словарь. в ключе элемент в значении количество таких. затем отсеиваете непарные а из оставшихся находите максимальный
Как вывести длину максимального элемента(типа str) из списка?
вводятся слова через пробел и добавляются в список и далее выводится максимальное по длине, но мне нужно чтобы выводилось длина этого максимального слова, а не само оно пытался так , но ничего не получается:
print(max(len(s) , key = len))

пример работы см. ниже:
Отслеживать
задан 31 дек 2020 в 15:37
823 1 1 золотой знак 9 9 серебряных знаков 29 29 бронзовых знаков
print(len(max(s , key = len)))
31 дек 2020 в 15:42
И полное решение в одну строку: print(len(max(input().split(), key=len)))
31 дек 2020 в 15:43
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
вариант 1 (наверное самый короткий по кол-ву используемых символов):
print(max(map(len, input().split())))
print(max(len(i) for i in input().split()))
print(len(max(input().split(), key=len)))
Отслеживать
ответ дан 31 дек 2020 в 15:54
37.2k 4 4 золотых знака 27 27 серебряных знаков 70 70 бронзовых знаков
10 хитростей Python, о которых полезно знать
По данным StackOverflow Python — это самый быстрорастущий язык программирования. Например, в одном из отчётов Forbes речь идёт о том, что использование Python выросло на 456%. Python применяется в Netflix, в IBM, и ещё в тысячах компаний по всему миру. Давайте не забывать и о Dropbox. Сервисы этой компании тоже написаны на Python. В соответствии с исследованием Dice, знания в области Python весьма востребованы в наши дни, а индекс популярности языков программирования говорит о том, что Python — это сегодня самый популярный язык в мире. Если сравнить Python с другими языками, то окажется, что у него есть следующие сильные стороны:

- Совместимость с подавляющим большинством платформ и операционных систем.
- Наличие множества опенсорсных фреймворков и инструментов.
- Код, который легко читать и поддерживать.
- Надёжная стандартная библиотека.
- Стандартный механизм разработки через тестирование.
Хитрости Python
Здесь мне хотелось бы представить вашему вниманию 10 полезных советов, касающихся программирования на Python. Они вполне способны помочь вам в вашей повседневной работе.
▍1. Конкатенация строк
Если нужно конкатенировать список строк, сделать это можно в цикле for , по одной добавляя строки к итоговому результату. Однако такой подход будет весьма неэффективным, особенно в том случае, если список оказывается достаточно длинным. В Python строки являются иммутабельными сущностями. В результате каждая операция по конкатенации строк означает необходимость копирования пары строк в новую строку.
Более эффективный подход к решению этой задачи заключается в использовании функции join() :
characters = ['p', 'y', 't', 'h', 'o', 'n'] word = "".join(characters) print(word) # python
▍2. Использование генераторов списков
Генераторы списков используются для создания новых списков из других итерируемых объектов. Так как генератор возвращает списки, его описание представляет собой выражение, включённое в квадратные скобки, выполняемое для каждого элемента списка. Сюда же входит и описание цикла for , выполняющего проход по каждому элементу. Генераторы списков позволяют ускорить работу со списками за счёт того, что интерпретатор Python оптимизирован в расчёте на шаблоны, повторяющиеся при обходе списка.
В качестве примера рассмотрим нахождение квадратов первых пяти целых чисел с использованием генератора списков:
m = [x ** 2 for x in range(5)] print(m) # [0, 1, 4, 9, 16]
Теперь найдём числа, которые встречаются в каждом из двух списков:
list_a = [1, 2, 3, 4] list_b = [2, 3, 4, 5] common_num = [a for a in list_a for b in list_b if a == b] print(common_num) # [2, 3, 4]
▍3. Итерирование списков с помощью enumerate()
Метод enumerate() добавляет к итерируемой коллекции нумерацию и возвращает объект, генерирующий пары элементов, состоящие из индекса элемента и самого этого элемента.
Решим классическую задачу FizzBuzz, предлагаемую на собеседованиях. Вот условие этой задачи: «Напишите программу, которая выводит список чисел. При этом вместо чисел, кратных 3, выводится fizz, вместо чисел, кратных 5 — buzz, а вместо чисел, кратных и 3, и 5 — fizzbuzz».
numbers = [30, 42, 28, 50, 15] for i, num in enumerate(numbers): if num % 3 == 0 and num % 5 == 0: numbers[i] = 'fizzbuzz' elif num % 3 == 0: numbers[i] = 'fizz' elif num % 5 == 0: numbers[i] = 'buzz' print(numbers) # ['fizzbuzz', 'fizz', 28, 'buzz', 'fizzbuzz']
▍4. Использование функции zip() при работе со списками
Предположим, что вам нужно скомбинировать несколько списков одинаковой длины и вывести результирующий список. Как и в других случаях, подобную задачу можно решить, так сказать, «в лоб», а можно воспользоваться чем-то вроде универсальной функции zip() :
countries = ['France', 'Germany', 'Canada'] capitals = ['Paris', 'Berlin', 'Ottawa'] for country, capital in zip(countries,capitals): print(country, capital) # France Paris Germany Berlin Canada Ottawa
▍5. Использование модуля itertools
Python-модуль itertools представляет собой набор инструментов для работы с итераторами. В состав этого модуля входит множество средств для генерирования различных последовательностей. Здесь, в качестве примера, рассмотрим метод itertools.combinations() . Этот метод используется для создания комбинаций. Тут есть и средства для группировки входных значений.
Рассмотрим реальный пример для того чтобы разобраться в вышесказанном.
Представьте, что в некоем турнире участвует четыре команды. В групповом раунде проводятся матчи каждой из команд против каждой из других команд. Ваша задача заключается в том, чтобы сгенерировать все возможные комбинации команд, которые будут играть друг против друга.
Взглянем на следующий код:
import itertools friends = ['Team 1', 'Team 2', 'Team 3', 'Team 4'] list(itertools.combinations(friends, r=2)) # [('Team 1', 'Team 2'), ('Team 1', 'Team 3'), ('Team 1', 'Team 4'), ('Team 2', 'Team 3'), ('Team 2', 'Team 4'), ('Team 3', 'Team 4')]
Здесь нужно обратить внимание на то, что порядок значений неважен. Так как комбинации (‘Team 1’, ‘Team 2’) и (‘Team 2’, ‘Team 1’) представляют собой одну и ту же пару команд, в итоговый список будет включена лишь одна из них. Похожим образом можно использовать и метод itertools.permutations() , и другие методы этого модуля. Подробное руководство по itertools можно найти здесь.
▍6. Использование коллекций Python
Коллекции Python — это контейнерные типы данных. В частности, это списки, множества, кортежи, словари. Модуль collections даёт в распоряжение разработчика высокопроизводительные типы данных, которые помогают улучшить код, сделать его чище и облегчить работу с ним. Этот модуль содержит множество полезных методов. Здесь мы рассмотрим метод Counter() .
Этот метод принимает итерируемый объект, такой, как список или кортеж, и возвращает словарь, содержащий сведения о количестве различных объектов в исследуемом списке (Counter Dictionary). Ключами такого словаря являются уникальные элементы, представленные в итерируемом объекте, а значениями — количества таких элементов.
Для создания объекта Counter нужно передать итерируемый объект (список, например) методу Counter() :
import collections count = collections.Counter(['a','b','c','d','b','c','d','b']) print(count) # Counter()
Подробности о модуле collections можно почитать здесь.
▍7. Преобразование двух списков в словарь
Предположим, у нас имеется два списка. Один из них содержит имена студентов, а второй — их оценки. Как преобразовать эти два списка в словарь? Если прибегнуть для этого к функции zip() , то данная задача может быть решена так:
students = ["Peter", "Julia", "Alex"] marks = [84, 65, 77] dictionary = dict(zip(students, marks)) print(dictionary) #
▍8. Использование функций-генераторов
Функции-генераторы — это функции, которые ведут себя как итераторы. Они позволяют программисту быстро и легко создавать аккуратные итераторы. Рассмотрим пример, раскрывающий эту идею.
Предположим, что нам нужно найти сумму квадратов первых 100000000 целых чисел, начиная с 1.
Выглядит эта задача, вроде бы, несложно. Её без проблем можно решить с помощью генераторов списков. Однако проблема тут заключается в большом объёме входных данных. Взглянем на следующий код:
import time t1 = time.clock() sum([i * i for i in range(1, 100000000)]) t2 = time.clock() time_diff = t2 - t1 print(f"It took Secs to execute this method") # It took 13.197494000000006 Secs to execute this method
Если нам нужно будет найти сумму квадратов для ещё большего количества чисел, то окажется, что эта методика для их поиска подходит плохо из-за того, что на поиск решения требуется очень много времени. В этой ситуации нам на помощь придут функции-генераторы Python. В нашем случае для того, чтобы перейти от использования генераторов списков к функциям-генераторам, достаточно поменять квадратные скобки в выражении генератора на круглые. Сделаем это и найдём время, необходимое для решения задачи:
import time t1 = time.clock() sum((i * i for i in range(1, 100000000))) t2 = time.clock() time_diff = t2 - t1 print(f"It took Secs to execute this method") # It took 9.53867000000001 Secs to execute this method
Как видно, теперь на решение той же задачи нужно заметно меньше времени. А при росте масштабов входных данных этот эффект окажется ещё более заметным.
Вот материал о функциях-генераторах.
▍9. Возврат из функции нескольких значений
В Python есть возможность возврата из функции нескольких значений. Этого нет во многих других популярных языках программирования. Для возврата из функции нескольких значений их нужно разделить запятыми. На основе этого списка значений Python создаст кортеж и вернёт его туда, откуда была вызвана функция. Вот пример:
def multiplication_division(num1, num2): return num1*num2, num1/num2 product, division = multiplication_division(15, 3) print("Product =", product, "Quotient #3AC1EF">▍10. Использование функции sorted()
В Python очень легко сортировать некие последовательности данных с использованием встроенной функции sorted(), которая берёт на себя решение всех сопутствующих задач. Эта функция сортирует любые последовательности (списки, кортежи) и всегда возвращает список с отсортированными элементами. Рассмотрим пример сортировки списка чисел в порядке возрастания:
sorted([3,5,2,1,4]) # [1, 2, 3, 4, 5]
А вот — пример сортировки списка строк в порядке убывания:
sorted(['france', 'germany', 'canada', 'india', 'china'], reverse=True) # ['india', 'germany', 'france', 'china', 'canada']
Итоги
В этом материале были представлены 10 полезных советов по программированию на Python, которые могут пригодиться вам в повседневной работе. Надеемся, вы найдёте среди них что-нибудь такое, что принесёт вам пользу.
Уважаемые читатели! Просим опытных Python-разработчиков рассказать о полезных возможностях Python, которыми они регулярно пользуются.
Dynamo Primer
Список — это набор элементов или компонентов. Возьмем, к примеру, связку бананов. Каждый банан является элементом списка (или связки). Проще взять в руки связку бананов, чем брать бананы по одному. Точно так же работать с элементами, сгруппированными по параметрическим связям в структуре данных, проще, чем с отдельными элементами.

Когда мы идем в магазин, мы кладем все, что купили, в пакет. Этот пакет также является списком. Мы хотим испечь банановый кекс, и нам нужно три связки бананов (мы печем очень большой кекс). Пакет представляет собой список связок, а каждая связка представляет собой список бананов. Пакет — это список списков (двумерный), а банан — это просто список (одномерный).
В Dynamo данные в списках упорядочиваются, и первому элементу в каждом списке присваивается индекс 0. Ниже мы рассмотрим то, как задать список в Dynamo, а также то, как разные списки могут быть связаны друг с другом.
Индексы, отсчитываемые от нуля
Первому элементу в списке всегда назначается индекс 0, а не 1, и поначалу это может показаться странным. Поэтому запомните, что, если речь идет о первом элементе в списке, подразумевается элемент с индексом 0.
Например, если бы вам потребовалось посчитать количество пальцев на правой руке, то вы бы начали считать с 1 до 5. Однако если бы вам потребовалось внести ваши пальцы в список, то приложение Dynamo назначило бы им индексы от 0 до 4. Это может показаться странным тем, кто только начинает заниматься программированием, однако индекс, отсчитываемые от нуля, является стандартным для большинства вычислительных систем.

Обратите внимание, что такой список по-прежнему включает пять элементов, просто в нем используется система отсчета от нуля, а не от единицы. Элементы списка не обязательно должны быть числами. Это могут быть данные любого типа, который поддерживается Dynamo, например точки, кривые, поверхности, семейства и т. д.
Зачастую самым простым способом узнать тип данных в списке является подключение узла Watch к порту вывода другого узла. По умолчанию узел Watch автоматически отображает все индексы в левой части списка, а элементы данных — в правой.
Эти индексы играют ключевую роль при работе со списками.
Входные и выходные данные
При работе со списками требуемые входные и выходные данные различаются в зависимости от используемого узла Dynamo. Для примера возьмем список из пяти точек и соединим его порт вывода с двумя разными узлами Dynamo: PolyCurve.ByPoints и Circle.ByCenterPointRadius:

- Порт ввода points узла PolyCurve.ByPoints выполняет поиск элемента Point[]. Этот элемент представляет собой список точек.
- Выходные данные узла PolyCurve.ByPoints — это элемент PolyCurve, созданный на основе списка пяти точек.
- Порт ввода centerPoint узла Circle.ByCenterPointRadius запрашивает элемент Point.
- Выходные данные Circle.ByCenterPointRadius представляют собой список из пяти окружностей, центры которых соответствуют точкам из исходного списка.
Узлы PolyCurve.ByPoints и Circle.ByCenterPointRadius используют одни и те же входные данные, однако узел Polycurve на выходе дает одну сложную кривую, а узел Circle — пять окружностей для каждой точки из списка. На интуитивном уровне это кажется понятным, так как сложная кривая строится путем соединения всех пяти точек, а при создании окружностей каждая точка используется в качества центра отдельной окружности. Что же происходит с данными?
При наведении указателя мыши на порт ввода points узла Polycurve.ByPoints можно увидеть, что этому порту требуется элемент Point[]. Обратите внимание на скобки в конце. Этот элемент представляет список точек, и чтобы создать сложную кривую, в качестве входных данных этому узлу требуется отдельный список точек для каждой кривой. В результате узел объединяет каждый полученный на вводе список в одну сложную кривую.
Порт ввода centrePoint узла Circle.ByCenterPointRadius запрашивает элемент Point. Этому узлу требуется одна точка, являющаяся отдельным элементом, которую он будет использовать в качестве центра окружности. Поэтому на основе тех же входных данных мы получаем пять отдельных окружностей. Знание различий в использовании входных данных в Dynamo помогает лучше понимать, как узлы распоряжаются данными.
Переплетение
Сопоставление данных является проблемой, для которой не существует четкого решения. Это происходит, когда узел получается доступ к входным данных разных размеров. Изменение алгоритма сопоставления данных может привести к существенным различиям в результатах.
Рассмотрим в качестве примера узел, который создает линейные сегменты между точками (Line.ByStartPointEndPoint). У него два входных параметра, которые используются для представления координат точек:

Как мы видим, прочертить линию через эти наборы точек можно разными способами. Параметры переплетения можно просмотреть, щелкнув центр узла правой кнопкой мыши и выбрав меню «Переплетение».
Базовый файл
Скачайте файл примера для этого упражнения (щелкните правой кнопкой мыши и выберите «Сохранить ссылку как. »): Lacing.dyn. Полный список файлов примеров можно найти в приложении.
Для изучения операций переплетения ниже мы воспользуемся этим базовым файлом, чтобы определить самый короткий и длинный списки, а также декартово произведение.

- Измените настройку переплетения узла Point.ByCoordinates в графике выше, оставив остальные элементы без изменений.
Самый короткий список
Самый простой способ — попарно соединять входные данные с одинаковыми индексами, пока один из списков не закончится. Это алгоритм по самому короткому списку. Узлы Dynamo используют этот алгоритм по умолчанию.


Изменив способ переплетения на Декартово произведение, вы получите базовую диагональную линию из пяти точек. Пять точек — это длина наименьшего списка. Таким образом, переплетение по самому короткому списку прекращается по достижении конца этого списка.
Самый длинный список
Алгоритм переплетения по самому длинному списку соединяет все входные элементы, используя некоторые элементы повторно, пока не закончатся оба списка:


При изменении способа переплетения на Самый длинный вы получите диагональную линию, которая имеет продолжение по вертикали. Аналогично схематическому изображению выше, пятый элемент короткого списка используется повторно, пока не будет достигнут конец более длинного списка.
Декартово произведение
Наконец, при использовании метода «Декартово произведение» создаются все возможные соединения:


Изменив способ переплетения на Декартово произведение, вы получите все возможные соединения между списками, в результате чего создается сетка 5 х 10 точек. Эта структура данных эквивалентна декартову произведению, показанному в схематическом изображении выше, однако данные теперь являются списком списков. Путем соединения сложной кривой можно увидеть, что каждый список определяется значением X, в результате чего образуется ряд вертикальных линий.
