Не могу определить самое длинное слово в файле, python

Дана следующая задача: "Текстовый файл состоит не более чем из 10^6 символов и содержит только заглавные латинские буквы и десятичные цифры. Определите самое длинное слово. Словом считается любая произвольная последовательность букв." Пробелов в файле нет, только цифры и буквы.

Я составила следующий код:

s = open('24.txt').read()
data = []
maxdata = []
for char in s:
    if char in '0123456789':
        data.clear()
    else:
        data.append(char)
        if len(data) > len(maxdata):
            maxdata.clear()
            maxdata = data
print(*maxdata)

Но он ничего не печатает. :( Можете написать, в чём проблема?


Ответы (1 шт):

Автор решения: CrazyElf

Вот здесь вы присваиваете переменной maxdata ссылку, которая содержится в переменной data. В результате чего у вас обе эти переменные начинают указывать на один и тот же список:

maxdata = data

Поэтому, когда вы дальше по ходу действия программы очищаете список, на который указывает переменная data:

data.clear()

Вы таким образом очищаете тот же самый список, на который указывает и maxdata и у вас этот список становится пустым. Чтобы такого не происходило, вам нужно присвоить maxdata ссылку на копию списка, на который указывает переменная data. Сделать это можно одним из следующих способов:

  • maxdata = data.copy()
  • maxdata = data[:]
  • maxdata = list(data)

Но ещё лучше вместо data.clear() использовать data = [], чтобы каждую итерацию цикла переменная data у вас указывала на новый список (обычно именно так и делают в питоне).

→ Ссылка