Подряд идущие элементы python

Работа с одинаковыми подряд идущими элементами двумерного массива

Дан двумерный массив, в каждом вложенном списке существует комбинация элементов S,s,x, нужно выявить в каждой строке матрицы самую длинную цепь подряд идущих одинаковых элементов либо S либо s (x НУЖНО ИГНОРИРОВАТЬ, он введен для разделения)
Ниже я представлю логику работы этой части программы и что нужно получить на выходе
За ранее ОГРОМНОЕ СПАСИБО!

НИЖЕ прикреплю фото с объяснением того что уже умеет делать мой код и зачем он это делает(возможно там лишние телодвижения, в P.S. описал подробнее это)

P.S. (мне по сути нужно потом будет составить строки из всех диагоналей и всех столбцов и в них так же выявить наиболее длинную непрерывную последовательность либо элемента S либо s, а ЗАТЕМ выяснить «лидера» с самой длинной непрерывной последовательностью по всей матрице и вывести его и длину его непрерывной последовательности. Мне кажется что я очень сильно намудрил и усложнил с использованием замен чередующихся элементов на символ «x», да и вообще наверное эту задачу можно решить проще, если у Вас есть идеи, как это сделать еще проще и/или эффективнее, то я очень хотел бы познакомиться с этими идеями, еще раз СПАСИБО!)

ЕГО ВЕЛИЧЕСТВО, САМЫЙ КОРЯВЫЙ КОД НА ПИТОНЕ:

1 2 3 4 5 6 7 8 9 10 11 12 13 14
N = int(input()) POLE = [] for i in range(N): POLE.append(list(input())) # заполняем список POLE, который будет хранить все поле посевов, где в каждой ячейке хранится for i in range(N): # заменяем паразитные 1-ый и последний элемент строки на X if POLE [i][0] != POLE[i][1]: # заменяем паразитные 1-ый и последний элемент строки на X POLE [i][0] = 'x' # заменяем паразитные 1-ый и последний элемент строки на X if POLE [i][N-1] != POLE[i][N-2]: # заменяем паразитные 1-ый и последний элемент строки на X POLE [i][N-1] = 'x'# заменяем паразитные 1-ый и последний элемент строки на X for k in range (N): # заменяем все паразитные элементы строки на X, КРОМЕ 1-ого и последнего if (k > 0) and (k  N-1): # заменяем все паразитные элементы строки на X, КРОМЕ 1-ого и последнего if (POLE[i][k] != POLE[i][k-1]) and (POLE[i][k] != POLE[i][k+1]): # заменяем все паразитные элементы строки на X, КРОМЕ 1-ого и последнего POLE[i][k] = 'x' # заменяем все паразитные элементы строки на X, КРОМЕ 1-ого и последнего print(POLE)

Источник

Найти в массиве все серии одинаковых элементов, идущих подряд, и удалить с них все элементы, кроме одного

Удалить из каждой группы подряд идущих одинаковых элементов все, кроме одного
Работа со списками: в списке целых чисел удалить из каждой группы подряд идущих одинаковых.

В списке целых чисел удалить из каждой группы подряд идущих одинаковых элементов все, кроме одного
Здравствуйте, Вы не могли бы помочь с задачей контрольной работы? "Составить программу. В.

Работа со списками: в списке целых чисел удалить из каждой группы подряд идущих одинаковых элементов все, кроме одного
Пожалуйста помогите с написанием программы. Вот задание: Работа со списками: в списке целых чисел.

В строке удалить все, кроме одного, одинаковых символов, идущих подряд
В строке удалить все, кроме одного, одинаковых символов, идущих подряд. Программу написать на С++.

Найти в массиве одинаковые элементы и удалить все, кроме одного
Добрый вечер, допустим есть массив (1, 1, 2, 2, 3, 4, 5) с такими значениями. Как написать.

Лучший ответ

Сообщение было отмечено Zen26 как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14
a_list = input().split() b_list = [] c_list = [] d = len(a_list) for new in a_list: # Преобразуем циклом все в числа, из строк b_list.append(int(new)) b_list.sort() # сортируем список что бы было удобнее искать for num in b_list: if int(b_list.count(num)) > 1: if str(num) in c_list: continue else: c_list.append(str(num)) print(' '.join(c_list))

Но, сейчас тебе накидают кучу вариантов еще !

Эксперт Python

Используйте itertools.groupby. И лучше не удалять из существующего списка (у вас же наверняка список, а не массив), а создать новый.

Добавлено через 1 минуту

ЦитатаСообщение от FedorovAleksei Посмотреть сообщение

Это меняет порядок элементов. Не сказано, что его можно было менять.
Если можно, то задача вообще решается в одну операцию — set().

Источник

Подсчет и группировка одинаковых подряд идущих элементов последовательности»

Рассмотрим последовательности чисел. Первая последовательность состоит из одного числа K. Каждая следующая последовательность чисел описывает предыдущую по такому правилу.

Просматриваем описываемую последовательность слева направо и разбиваем на отрезки, состоящие из подряд идущих равных чисел (причем все идущие подряд одинаковые числа всегда объединяем в один отрезок). Далее каждый такой отрезок описываем двумя числами — первое число говорит, сколько раз повторяется одно и то же число, второе число говорит, какое именно число повторяется. Записываем эти пары последовательно в соответствии с отрезками слева направо, и получаем новую последовательность (см. примеры ниже).

Например, для K=2 последовательности получатся такими:

Последовательность, как ее читать (слова в описании соответствуют числам текущей последовательности слева направо, и описывают предыдущую последовательность)

2 Исходная последовательность 1 2 Одна «двойка» 1 1 1 2 Одна «единица», одна «двойка» 3 1 1 2 Три «единицы», одна «двойка» 1 3 2 1 1 2 Одна «тройка», две «единицы», одна «двойка» 1 1 1 3 1 2 2 1 1 2 Одна «единица», одна «тройка», одна «двойка», две «единицы», одна «двойка»

Напишите программу, которая по исходному числу K напечатает N-ую получающуюся последовательность.

Входные данные
Вводится число K (1 ≤ K ≤ 9) и число N (1 ≤ N ≤ 15).

Выходные данные
Ваша программа должна печатать N-ую последовательность, полученную из начальной последовательности, состоящей из одного числа K. Числа при выводе следует разделять пробелами.

Источник

В массиве определить максимальное количество

В массиве A(N) определить максимальное количество подряд идущих положительных элементов, не прерываемых ни нулями, ни отрицательными элементами.

В массиве определить максимальное количество
Здравствуйте. Помогите, пожалуйста, написать программу. В массиве A(N) определить максимальное.

Определить максимальное количество одинаковых элементов в массиве
Дан целочисленный массив размера N. Определить максимальное количество его одинаковых элементов.

в массиве F (k) определить максимальное количество расположенных по убыванию элементов, стоящих подряд
помогите написать програму: в массиве F (k) определить максимальное количество расположенных по.

Определить в массиве максимальное количество идущих подряд и упорядоченных по возрастанию положительных чисел
Задан целочисленный массив Х из 20 элементов. Определить максимальное количество идущих подряд и.

В двумерном массиве определить количество и сумму отрицательных элементов, максимальное из чисел в заданном столбце
Помогите решить задачу с двумерным массивом. Его нужно заполнить по строкам с клавиатуры и.

Luna98, доброго дня! в чем у вас трудность?

Добавлено через 18 минут

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# есть список my_list = [-7, 6, 3, -3, -8, -2, -5, 0, -8, 2, 6, 1] # сделаем счетчик count = 0 # и максимальное количество подряд идущих положительных элементов max_lenght = 0 # переберем все for item in my_list: # если элемент положителен if item > 0: # прибавим счетчик на 1 count += 1 # проверим значение счетчика с макс. количеством подряд эл-тов if count > max_lenght: # если счетчик превысил, то присвоим значение счетчика max_lenght max_lenght = count # если элемент отрицателен то сбросим счетсчик и будем считать заново elif item  0: count = 0 print(max_lenght)

В заданном массиве определить номер 1-го рядка, который имеет максимальное количество положительных элементов
В заданyом массиве У(n, m) определить номер 1-го рядка, который имеет максимальное количество.

В одномерном массиве найти максимальное количество четных элементов и максимальное количество нечетных элементов, расположенных рядом
В одномерном массиве найти максимальное количество четных элементов и максимальное количество.

Максимальное количество строк в массиве
подключаю файл с несколькими массивами require_once "test.php"; // внутри обычные массивы.

Источник

Python-сообщество

[RSS Feed]

  • Начало
  • » Центр помощи
  • » Задача с pythontutor

#1 Июль 18, 2016 14:26:11

Straik32423 От: Ростов-на-Дону, Россия Зарегистрирован: 2016-05-18 Сообщения: 46 Репутация: 0 Профиль Отправить e-mail

Задача с pythontutor

Привет. Помогите решить задачу.
Дана последовательность натуральных чисел, завершающаяся числом 0. Определите, какое наибольшее число подряд идущих элементов этой последовательности равны друг другу.

#2 Июль 18, 2016 15:33:16

Задача с pythontutor

Нужно две переменные: одна — под максимальное число равных элементов, другая — под текущее число равных элементов. И нужно ещё одну переменную под предыдущий элемент.

Берёшь каждый элемент, сравниваешь его с предыдущим и там три ситуации:
1) Элемент — ноль. Нужно сравнить максимальное число с текущим числом и заменить максимальное на текущее, если текущее больше максимального.
2) Элемент — не ноль и равен предыдущему элементу. Увеличить текущее число.
3) Элемент — не ноль и не равен предыдущему элементу. Сравнить максимальное число с текущим числом и заменить максимальное на текущее, если текущее больше максимального. Установить текущее число в 1.

Отредактировано py.user.next (Июль 18, 2016 15:50:06)

#3 Июль 19, 2016 13:35:03

Straik32423 От: Ростов-на-Дону, Россия Зарегистрирован: 2016-05-18 Сообщения: 46 Репутация: 0 Профиль Отправить e-mail

Задача с pythontutor

py.user.next
Нужно две переменные: одна — под максимальное число равных элементов, другая — под текущее число равных элементов. И нужно ещё одну переменную под предыдущий элемент.Берёшь каждый элемент, сравниваешь его с предыдущим и там три ситуации:1) Элемент — ноль. Нужно сравнить максимальное число с текущим числом и заменить максимальное на текущее, если текущее больше максимального.2) Элемент — не ноль и равен предыдущему элементу. Увеличить текущее число.3) Элемент — не ноль и не равен предыдущему элементу. Сравнить максимальное число с текущим числом и заменить максимальное на текущее, если текущее больше максимального. Установить текущее число в 1.

Спасибо, почти получилось. Результат правильный практически при всех последовательностях, кроме двух. Помогите, пожалуйста, найти ошибку.

i = -1 k = -1 e = 1 max = 1 while i != 0: i = int(input()) if i == k: e += 1 else: if e > max: max = e e = 0 k = i print(max) 

Вот список цифр, при которых результат неверный. Выводит 3 вместо 4…

Отредактировано Straik32423 (Июль 19, 2016 13:37:06)

Источник

Читайте также:  Delphi chromium получить html
Оцените статью