Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 18, 2016 20:03:53

Vivernlie
Зарегистрирован: 2016-09-18
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с содержимым list

Ниже приведено (мое) решение одной маленькой задачи

 fname = raw_input("Enter file name: ")
if fname == "":
    fh = open('romeo.txt')
else:
    fh = open(fname)
lst = list()
for line in fh:
    junk = line.split()
    for w in junk:
        lst.append(w)
        lst.sort()
print lst   

На выходе получаю лист:
 ['Arise', 'But', 'It', 'Juliet', 'Who', 'already', 'and', 'and', 'and', 'breaks', 'east', 'envious', 'fair', 'grief', 'is', 'is', 'is', 'kill', 'light', 'moon', 'pale', 'sick', 'soft', 'sun', 'sun', 'the', 'the', 'the', 'through', 'what', 'window', 'with', 'yonder']

Но результат должен выглядеть вот так:
 ['Arise', 'But', 'It', 'Juliet', 'Who', 'already', 'and', 'breaks', 'east', 'envious', 'fair', 'grief', 'is', 'kill', 'light', 'moon', 'pale', 'sick', 'soft', 'sun', 'the', 'through', 'what', 'window', 'with', 'yonder']

В результате не дублируются ‘and’ и ‘is’. Пытался сделать все через .remove однако выдает ошибку, что нету в листе искомого. Пытался как через название, так и через индекс. Ничего не получается.

Офлайн

#2 Сен. 18, 2016 20:26:13

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Проблема с содержимым list

я так понимаю задача получить отсортированный список уникальных слов. Однако вы ничего не делаете что бы организовать уникальность. К тому же вы сортируете список после каждого элемента - его нужно сортировать один раз - в самом конце.
Задачу грамотнее всего решить используя не списки, а множества.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Сен. 19, 2016 03:51:45

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

Проблема с содержимым list

  
>>> text = 'A B C a b c A B C D a b c'
>>> 
>>> out = sorted(set(text.split()))
>>> out
['A', 'B', 'C', 'D', 'a', 'b', 'c']
>>>



Отредактировано py.user.next (Сен. 19, 2016 03:52:05)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version