Как узнать длину конкретного объекта списка - PullRequest
1 голос
/ 22 июня 2019

Почему следующая строка работает так, как я хочу

print(len(lista[cont])-1)

но этот выводит мне ошибку

z = len(lista[cont]) - 1
lista.append(z)

Сообщение об ошибке:

TypeError: object of type 'int' has no len()

Почему я могу напечатать количество элементов, но не могу сохранить одно и то же значение в переменной? Есть ли способ сделать это? Это мой список, и, например, list[0] необходимо вернуть 15. RAW текстовый код можно найти здесь .

[['1', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU'], ['2', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU'], ['3', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU'], ['4', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU'], ['5', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU'], ['6', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'ES', 'ES', 'CPU', 'CPU'], ['7', 'CPU', 'ES', 'CPU', 'ES', 'CPU', 'ES', 'CPU', 'ES', 'CPU'], ['8', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'ES', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'ES', 'ES', 'CPU', 'CPU']]

Полный код:

lista = []

nomeArquivo = 'entrada.txt'
f = open(nomeArquivo,'r')
cont = 0

for a in f.readlines():
    linha = a.replace('\n', '')
    lista.append(linha.split(";"))
    z = len(lista[cont]) - 1
    lista.append(z)
    cont+=1
print(lista)

1 Ответ

1 голос
/ 22 июня 2019

Когда вы делаете lista.append(z), вы добавляете целое число к lista, а затем, когда вы пытаетесь len(lista[idx]) - 1, вы пытаетесь вычислить длину целого числа, отсюда и исключение TypeError: object of type 'int' has no len()

Вместо этого вы хотите добавить длину в конец списка, который вы добавляете, используя lista[idx].append(z).Вы также можете использовать с менеджером контекста для взаимодействия с файлами

lista = []

#Open your file
with open('entrada.txt') as f:

    #Use enumerate to iterate over the lines and get index and element
    for idx, a in enumerate(f.readlines()):
        linha = a.replace('\n', '')
        lista.append(linha.split(";"))
        z = len(lista[idx]) - 1

        #Append length at the end of sublist
        lista[idx].append(z)

print(lista)

Вывод будет

[['1', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 15], 
['2', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 7], 
['3', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 'CPU', 28]
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...