Поиск одинаковых значений в списке или строке

el-megel

Новичок
Пользователь
Янв 29, 2022
18
0
1
Поиск одинаковых значений

m = [1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 5, 1, 1, 1, 4, 1, 1, 1]
n = m[-3:]

for i in m:
if n.count(m) []:
print(n)


Подскажите пож как сделать чтобы принт вывел
1112
1112
1113
1115
1114
т.е. выбрал из списка значения равные срезу (m[-3:]) и следующее после среза значение, или несколько.
Возможно будет производительнее использовать другой способ поиска или использовать строку вместо списка.

Есть еще куча необязательных вопросов( возможно сам разберусь хотя...подсказка сильно сэкономит время) на которые
хотелось бы получить ответ
-Данные будут вводиться в конец списка (или строки - тут уж как посоветуете) - как поведет себя функция
при достижении списка допустим 1000000 значений - насколько сильно будет тормозить процесс?
Возможно ли ограничить динну списка допустим до (100) знаков при этом при введении 101го знака знак с индексом 0
уходил в какой нибудь текстовый файл на сохранение и т.д.? При этом эти сохранённые данные могут потребоваться
для обработки, хотя всё зависит от динны списка и актуальности-возможно при длинне в 10000 знаков
данные устареют в корне. Тут тестить пидётся.

Спасибо.
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Примерно так:
Python:
m = [1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 5, 1, 1, 1, 4, 1, 1, 1]
for i in range(0, len(m), 4):
    print(m[i:i+4])
 
  • Мне нравится
Реакции: el-megel

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
26
28
как вывести?
хоть и подскажут, имея:
Код:
m = [1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 5, 1, 1, 1, 4, 1, 1, 1]
n = m[-3:]
print(n) # [1, 1, 1]
вам ничего не выведет, потому, что отрабатывая for i in m:
будет одна цифра, но никак не три..........
 

el-megel

Новичок
Пользователь
Янв 29, 2022
18
0
1
Дык в том и затык...я много перекопал уроков, но по этой теме аналогов не нашел. Вот и педалю клаву надеясь на чудо....
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
26
28
тема зовётся: Поиск одинаковых значений, вот по теме и чуток больше)
Код:
x = [1, 2, 6, 3, 4, 5, 6, 2, 7, 2, 8]
# уникальные данные из массива
list_уник = list(set(x))
# повторяющиеся данные из массива
list_повтор = list([k for k, v in Counter(x).items() if v > 1])
 

el-megel

Новичок
Пользователь
Янв 29, 2022
18
0
1
щас посмотрю последний ответ - а уникальные данные юзал - не подходит
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
Подскажите пож как сделать чтобы принт вывел
1112
1112
1113
1115
1114
можно так
Python:
m = [1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 5, 1, 1, 1, 4, 1, 1, 1]
count = 0

for i in range(int(len(m) / 4)):
    old_count = count
    count += 4
    print("".join(map(str, m[old_count:count])))


как поведет себя функция
при достижении списка допустим 1000000 значений - насколько сильно будет тормозить процесс?
что вам мешает попробовать?


Возможно ли ограничить динну списка допустим до (100) знаков при этом при введении 101го знака знак с индексом 0
уходил в какой нибудь текстовый файл на сохранение и т.д.?
возможно
 

el-megel

Новичок
Пользователь
Янв 29, 2022
18
0
1
Вершителю судеб моё почтение - работает, то что нужно. Постараюсь разобраться в коде - в смысле
что в уроках про сравнения такого не видел.
Спасибо.
 

el-megel

Новичок
Пользователь
Янв 29, 2022
18
0
1
не, не работает...видимо я вопрос неправильно сформулировал...
в смысле работает, только это я и срезом делал. мне нужно чтобы искало в списке последовательность значений
соответствующих значениям среза и выдавало +1 значение или несколько после соответствия

код с уникальными данными - на Counter ругается чота...
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
не, не работает...видимо я вопрос неправильно сформулировал...
в смысле работает, только это я и срезом делал. мне нужно чтобы искало в списке последовательность значений
соответствующих значениям среза и выдавало +1 значение или несколько после соответствия

код с уникальными данными - на Counter ругается чота...
Что пишет? И что ты хочешь посчитать, количество вхождений 1112 например?
 

el-megel

Новичок
Пользователь
Янв 29, 2022
18
0
1
При добавлении значения в конец списка исправно выводит последние 4 значения.
Но мне то нужно последние значения из списка (4 или 8 или 10 значений) сравнить со списком (в списке для уверенного анализа
скорее всего будет от 1000 значений )и если строгое
соответствие имеется или скорее всего их будет несколько - то выводить это совпадение + (1, 2, 3, - несколько значений
после совпадения) . Таким образом можно вычислить закономерности чего - либо присвоив значениям в списке определённые параметры.
Изменения погоды. режимы работы оборудования. сколько раз Боря Моисеев проскрипит ..голубая луна.. и проч.
Ну как то так...
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
То есть есть список полученных откуда-то значений, условно
[1, 2, 3, 4, 5, 6, 7, 8]
И ваш список значений, например
[1, 2, 3, 4, 6, 5, 7, 8]

А на выходе вы хотите получить результат, сравнив по 4 значения (начиная сначала), тут это
1234

Правильно понимаю?
 

el-megel

Новичок
Пользователь
Янв 29, 2022
18
0
1
Уже ближе.
Но не обязательно именно 4.
И список предпологается один. Вводится значение в конец списка. Получается с каждым вводом изменяется условие поска.

Допустим (список , строка - вроде разницы особой нет пока - для примера) - есть текст книги ,,Властелин колец,, помещённый в нашу строку,
- я в функции указываю что хочу выводить совпадения по последним 5 знакам + 30 знаков после
- ввожу ,Ф, р, о, д, о и получаю на выходе
ну к примеру конечно
Фродо проснулся (******остальные знаки до 30 запрошенных)
Фродо причесал мех на лапах ***
Фродо метнул ножи
Фродо натянул тетиву
Фродо натянул...уточнять не будем. (и тут мы обращаем внимание чо он часто натягивает и начинаем изучать список из 13 знаков
,,Фродо натянул,,)

В принципе уже здесь ярко выражена последовательность
1 - пробел как константа ну типа self
2 - далее в основном будет глагол -действие
т.е для анализа уже есть пара параметров

На примере автомобиля;
- многократная смена и повторение таких условных данных как газ - тормоз - время
позволяет сделать вывод о движении в пробке
- и длителиное - газ- по движении по автобану или простой дороге, если мы добавим значение ,,скорость,,

В общем тут тестить непочатый край..
 
Последнее редактирование:

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Ага, тогда возможно стоит уходить в регулярные выражения:
Python:
import re
text = 'текст какой-то это, текст может быть любым'
find = re.find_all('текст.{9}', text)
print(find)

# текст какой-то
# текст может бы
Ну и вместо 'текст.{9}' можно написать
f"{text[-5]}.{{8}}"

text[-5] - последние указанное количество букв
8 - сколько букв после показывать
 
Последнее редактирование:

el-megel

Новичок
Пользователь
Янв 29, 2022
18
0
1
скопировал. сейчас точно не асилю - глаза слипаются. как очнусь сразу буду юзать
 

el-megel

Новичок
Пользователь
Янв 29, 2022
18
0
1
заработало python
import re

text = 'aababbcaab'
find = re.findall(f'{text[-3]}.{{3}}', text)
print(find)
>>>
кумент — копия.py
['aaba']

- как видно последние 3 значения (aab) соответствуют выданному принтом и добавлено следующее из строки.

я сейчас в процессе теста и уже есть скажем интересные странные артефакты - при достаточной длинне строки уже за 30 знаков и более
-при вводе ранее не присутсвовавшего в строке знака (допустим z) - выдаёт честное - []
- если продолжить вводить (опять же ранее не вводимые fkrwy *не обязательно в этом порядке*) - то может выдать вообще что то
непредсказуемое и никоим образом не пересекающееся с последними запрошенными к сравнению значениями. оч интересно -
- может функция генерит производные от порядка букв в алфавите...

педалю далее, отпишусь позже
 

el-megel

Новичок
Пользователь
Янв 29, 2022
18
0
1
не работает.
это просто перебирает строку и выводит на печать заданные параметрами text[-3]}.{{3}}', tex куски строки.
т.е никакого сравнения не происходит
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Ну а в чем сравнение, он ведь должен искать вхождение указанного слова и выводить его + часть текста после него (судя по Фродо)?
 

el-megel

Новичок
Пользователь
Янв 29, 2022
18
0
1
функция ищет первое значение в параметре - f'{text[-3]}.{ т.е во ,,Фродо,, это будет первая ,,о,, и потом выдаёт всё подряд начинающееся с ,,о,,
- если будет [-5 ] то выдаст и всё на ,,ф,, -там будет всё по порядку начиная с начала списка ,,
  • Фасон
  • Филин
  • Фляга
  • Фуляр
  • Фавор
  • Ферзь
  • Финиш
  • Форум
  • и т.д функция не ищет совпадения хотя бы 3х из пяти значений.
  • если на [-5] попадает значение которого ранее не было в списке - то только в таком случае принт выдаёт пустые [ ]
  • я пытался прописать строгий поиск f'{text[-3], text[-2]. text[-1]}.{
  • но программа не отрабатывает и ошибок не выдаёт....а я не владею. Верхушек с ютуба нахватался а чо куда дальше - ниале.
  • читал вчера про функцию /re./ букав много, а с кривым переводом ...ну тяжко короче.
  • возможно подойдёт что то типа - re.search(
  • import re
    >>> m = re.search('(?<=abc)def', 'abcdef')
    >>> m.group(0)
    'def'
  • ) - но как начинаю прописывать сплошные ошибки - ну ясен ламер же.
  • возможно я вообще не туда копаю
  • я бы и с азов начал - но как я предполагаю, все азы уже рассказаны в 7-ми часовом видео на ютубе
  • -https://www.youtube.com/watch?v=5g-MHZ0MzZY&list=PLUUBbkt-p7fkRr02D9_K4OP6qSsKVQ2AW&index=3&t=3409s
  • но опять же это только верхушки и судя по вопросам на форумах - это видео прям на 100% соответствует запросам учащихся.
  • типа скока будит 2+2, а как паминять малинькии буквы на бальшии...
  • но видимо придётся начинать с 2+2...хотя наверное нужно синтаксис осилить для начала...
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Ок, сори, это походу мой косяк.... Там должно быть не
f"{text[-5]}.{{8}}"
а
f"{text[-5:]}.{{8}}"

text[-5] - это 5-я с конца буква
text[-5:] - это последние 5 букв
 

el-megel

Новичок
Пользователь
Янв 29, 2022
18
0
1
прочитал в телефоне сообщение, пока до компа доехал всю дорогу себя хаял какой же я не в чате будь сказано...
- ведь и сам бы мог допереть - но нет.... щас педалить начну . отпишусь чокак
огромное спасибо что тему не забросил. а то я вчера уже переключился на досканальный пересмотр ютуба и забросил тесты до пока не поумнею
 

Форум IT Специалистов