为什么下面这行能如愿
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 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)
答案 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]
....