Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 15, 2023 08:55:16

agent_romanof
От: Тиват
Зарегистрирован: 2023-10-15
Сообщения: 8
Репутация: +  -1  -
Профиль  

Удаление слов дублей (с конца)

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

 t = input().split()[::-1]
for i in t:
   if [j.lower() for j in t].count(i.lower()) > 1:
      t.remove(i)   
print(*t[::-1])
Если ввести строку: “onE oNe two Two three FouR foUr five”, то мой код выдаст “onE two three FouR five”, что правильно. Но если увеличить количество слов, происходит черт пойми что.
Например:
Ввод: “one one two two three four four five six six one two”
Вывод: “one one two three four five six” - почему-то one стал два раза
или:
Ввод: “one one two two three four four five six six one two three four five six”
Вывод: “one one two three four five six three” - тут уже three в конец залетела
..
Подскажите, пожалуйста, в чем проблема? На маленьких текстах всё ок, на больших с ума сходит.
Если что, это из задания не степике. Само задание решил. Просто не понимаю, почему этот вариант не работает?

Отредактировано agent_romanof (Окт. 15, 2023 10:10:20)

Офлайн

#2 Окт. 15, 2023 20:47:54

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9844
Репутация: +  853  -
Профиль   Отправить e-mail  

Удаление слов дублей (с конца)

agent_romanof
Мой код:
  
t = input().split()[::-1]
for i in t:
   if [j.lower() for j in t].count(i.lower()) > 1:
      t.remove(i)   
print(*t[::-1])
Какая-то тупость на тупости тупостью погоняет.

Зачем строку переворачивать?
Зачем на каждом слове проходить по словам, которые пройдены уже и пройдены не по одному разу?
Зачем проходить по списку многократно?

На миллионе слов оно будет миллион раз перебирать этот миллион слов, которые уже перебирало миллион раз до этого.

agent_romanof
Просто не понимаю, почему этот вариант не работает?
Оно не работает, потому что ты посчитал себя слишком умным. Простую задачу решить не можешь.

agent_romanof
На маленьких текстах всё ок
Это случайность.

  
>>> def f():
...     t = input().split()[::-1]
...     for i in t:
...        if [j.lower() for j in t].count(i.lower()) > 1:
...           t.remove(i)
...     print(*t[::-1])
... 
>>>
>>> f()
one two one two one
one two two
>>>

Ошибка у тебя стандартная для новичков: новички думают, что цикл for фиксирует все элементы перебираемой последовательности, в то время как он, на самом деле, идёт по живой последовательности, которую нельзя менять внутри цикла.

При этом это всё не исключает всей той “умности” в самом алгоритме, где у тебя на миллион слов миллион повторных переборов этих слов.

agent_romanof
Если что, это из задания не степике.
Надо всего лишь сделать цикл внутри цикла. Но ты решил сумничать и сэкономить буквы, в итоге сидишь тут и спрашиваешь про эту простейшую задачу.

“А я возьму… миллион слов переверну, а потом, ах!.. поищу в этом перевёрнутом миллионе слов одно и то же слово миллион раз!”.

Ты перед каждым переворачиванием миллиона слов должен думать “а нахера я это делаю?! у меня с головой-то всё в порядке?!”.

Тебе какой-нибудь датчик температуры там или дистанции будет передавать бесконечно значения, как ты их перевернёшь? они бесконечные. Где-то это просто к задержкам приведёт, а где-то это вообще будет сделать невозможно. Или ты думаешь, что эти слова тупые изучают в алгоритмах, чтобы лингвистами все были потом и со словарями сидели? Это на примере слов просто сам принцип изучают, как с этим всем обращаться. Потом эти слова становятся какими-то числами от каких-то датчиков, какими-то цифрами от каких-то бухгалтеров, какими-то дезоксирибонуклеиновыми кислотами от каких-то ботаников и прочей шушеры.



Отредактировано py.user.next (Окт. 15, 2023 21:17:05)

Офлайн

#3 Окт. 17, 2023 02:20:38

agent_romanof
От: Тиват
Зарегистрирован: 2023-10-15
Сообщения: 8
Репутация: +  -1  -
Профиль  

Удаление слов дублей (с конца)

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

Офлайн

#4 Окт. 17, 2023 03:26:26

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9844
Репутация: +  853  -
Профиль   Отправить e-mail  

Удаление слов дублей (с конца)

agent_romanof
Не обязательно быть таким высокомерным.
Так ты иди тогда на степик, что ты сюда-то припёрся? Удод очередной. Разберите мою тупую хуйню, а потом я вам минус поставлю за это. Чушка ты и есть. Так что давай, до свидания!

Бедненькая свинюшка хотела закосить тут под умную. Но обосралась на детской задачке. И все виноваты и степик виноват, что она просто тупая.



Отредактировано py.user.next (Окт. 17, 2023 03:29:17)

Офлайн

#5 Окт. 17, 2023 03:46:46

agent_romanof
От: Тиват
Зарегистрирован: 2023-10-15
Сообщения: 8
Репутация: +  -1  -
Профиль  

Удаление слов дублей (с конца)

Мне хотя бы не требуется где-то в интернете самоутверждаться на фоне новичков в каком-либо деле.
Да, написал херню. Хотел узнать, почему моя херня - это херня, теперь знаю.

Офлайн

#6 Окт. 17, 2023 03:51:19

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9844
Репутация: +  853  -
Профиль   Отправить e-mail  

Удаление слов дублей (с конца)

agent_romanof
Мне хотя бы не требуется где-то в интернете самоутверждаться
Да тебе надо самоутверждаться, только ты не можешь самоутверждаться, потому что обосрался на первой же задачке. Здесь тебе не песочница, где ты можешь там детсадовцев пинать, будучи сам там пятиклассником тупым. Твой дебилизм, а он у тебя есть, потому что тебя по пьянке заделали, проявляется в том, что ты сразу сходу полез на кого-то, кто знает больше тебя в тысячу раз. И что ты получил в результате? А тебе просто сразу же ведро говна на голову вылили и ты даже не успел презентировать себя. Ну вот теперь попробуй расскажи о себе кому-нибудь что-нибудь. Все видят, что ты какой-то говноед.



Офлайн

#7 Окт. 17, 2023 03:57:03

agent_romanof
От: Тиват
Зарегистрирован: 2023-10-15
Сообщения: 8
Репутация: +  -1  -
Профиль  

Удаление слов дублей (с конца)

Какой же ты смешной то. Я бы с удовольствием посмотрел на твое выражение лица, пока ты весь этот ядовитый текст из себя выдавливал.

Офлайн

#8 Окт. 17, 2023 04:00:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9844
Репутация: +  853  -
Профиль   Отправить e-mail  

Удаление слов дублей (с конца)

agent_romanof
Я бы с удовольствием посмотрел на твое выражение лица
Да кому ты нужен, неудачник? Ты посмотри на свою жизнь вообще, кто ты есть.



Офлайн

#9 Окт. 17, 2023 04:19:44

agent_romanof
От: Тиват
Зарегистрирован: 2023-10-15
Сообщения: 8
Репутация: +  -1  -
Профиль  

Удаление слов дублей (с конца)

Ты, действительно, забавный случай. Хоть бы оскорблять научился. А то больше смешно, чем обидно.

Офлайн

#10 Окт. 17, 2023 04:40:25

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9844
Репутация: +  853  -
Профиль   Отправить e-mail  

Удаление слов дублей (с конца)

Не, мне нужно было просто обидеть тебя хорошенечко, чтобы ты обиделся по-настоящему. Чтобы ты о-о-очень сильно обиделся. В принципе, я этот результат и получил, потому что тупого очень легко обидеть. Всё равно после тебя ничего не останется. Хорошего ты ничего сделать не можешь, а плохое никого не интересует, в нём ценности нет.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version