首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取列表中具体对象的长度

如何获取列表中具体对象的长度
EN

Stack Overflow用户
提问于 2019-06-22 06:34:32
回答 1查看 290关注 0票数 1

为什么下面这行代码能像我希望的那样工作

代码语言:javascript
复制
print(len(lista[cont])-1)

但这一条给了我一个错误

代码语言:javascript
复制
z = len(lista[cont]) - 1
lista.append(z)

错误消息为:

代码语言:javascript
复制
TypeError: object of type 'int' has no len()

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

代码语言:javascript
复制
[['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']]

完整代码:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-22 07:10:19

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

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

代码语言:javascript
复制
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)

输出将是

代码语言:javascript
复制
[['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]
....
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56711127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档