如何获取列表中特定对象的长度

时间:2019-06-21 22:34:31

标签: python python-3.x list

为什么下面这行能如愿

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

但是这个让我出错了

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

错误消息是:

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

为什么我可以打印元素数量,但是不能在变量中存储相同的值?有办法吗? 这是我的列表,例如,list[0]需要返回15RAW txt code can be found here

[['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 个答案:

答案 0 :(得分:1)

当您执行lista.append(z)时,您要向lista添加一个整数,然后当您尝试len(lista[idx]) - 1时,您最终会尝试计算整数的长度,因此例外TypeError: object of type 'int' has no len()

相反,您想将长度添加到使用lista[idx].append(z)添加的子列表的末尾。您还希望使用with context manager与文件进行交互

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]
....