Найти - Пользователи
Полная версия: Удаление слов дублей (с конца)
Начало » Python для новичков » Удаление слов дублей (с конца)
1 2
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])
Если ввести строку: “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 в конец залетела
..
Подскажите, пожалуйста, в чем проблема? На маленьких текстах всё ок, на больших с ума сходит.
Если что, это из задания не степике. Само задание решил. Просто не понимаю, почему этот вариант не работает?
py.user.next
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
Если что, это из задания не степике.
Надо всего лишь сделать цикл внутри цикла. Но ты решил сумничать и сэкономить буквы, в итоге сидишь тут и спрашиваешь про эту простейшую задачу.

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

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

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

Бедненькая свинюшка хотела закосить тут под умную. Но обосралась на детской задачке. И все виноваты и степик виноват, что она просто тупая.
agent_romanof
Мне хотя бы не требуется где-то в интернете самоутверждаться на фоне новичков в каком-либо деле.
Да, написал херню. Хотел узнать, почему моя херня - это херня, теперь знаю.
py.user.next
agent_romanof
Мне хотя бы не требуется где-то в интернете самоутверждаться
Да тебе надо самоутверждаться, только ты не можешь самоутверждаться, потому что обосрался на первой же задачке. Здесь тебе не песочница, где ты можешь там детсадовцев пинать, будучи сам там пятиклассником тупым. Твой дебилизм, а он у тебя есть, потому что тебя по пьянке заделали, проявляется в том, что ты сразу сходу полез на кого-то, кто знает больше тебя в тысячу раз. И что ты получил в результате? А тебе просто сразу же ведро говна на голову вылили и ты даже не успел презентировать себя. Ну вот теперь попробуй расскажи о себе кому-нибудь что-нибудь. Все видят, что ты какой-то говноед.
agent_romanof
Какой же ты смешной то. Я бы с удовольствием посмотрел на твое выражение лица, пока ты весь этот ядовитый текст из себя выдавливал.
py.user.next
agent_romanof
Я бы с удовольствием посмотрел на твое выражение лица
Да кому ты нужен, неудачник? Ты посмотри на свою жизнь вообще, кто ты есть.
agent_romanof
Ты, действительно, забавный случай. Хоть бы оскорблять научился. А то больше смешно, чем обидно.
py.user.next
Не, мне нужно было просто обидеть тебя хорошенечко, чтобы ты обиделся по-настоящему. Чтобы ты о-о-очень сильно обиделся. В принципе, я этот результат и получил, потому что тупого очень легко обидеть. Всё равно после тебя ничего не останется. Хорошего ты ничего сделать не можешь, а плохое никого не интересует, в нём ценности нет.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB