【问题标题】:Why does len(list) gives type error for a list? [duplicate]为什么 len(list) 会给出列表的类型错误? [复制]
【发布时间】:2017-05-20 17:49:10
【问题描述】:

这是我的代码的一部分:

k=int(raw_input(""))

for m in range(k):

q=[]
pseudolis=[]
l=map(int,raw_input("").split())
lenlist=map(int,raw_input("").split())
for i in range(l[1]):
    q.append(int(raw_input("")))
lenlist.sort()
for i in range(len(q)):
    pseudolis=list(lenlist)
    while(len(pseudolis)>0):
        for i in range(pseudolis.__len__()):
            if pseudolis[i]>=q[i]:
                continue
            else:
                flag=0
                break
        else:
            flag=1
        if flag:
            print pseudolis.__len__()
            break
        else:
            pseudolis[1]+=1
            pseudolis=pseudolis[1:].sort()

else:
    print len(pseudolis)

某个时刻的输出:

Traceback (most recent call last):
  File "C:/Python27/SNKDWNQL.py", line 66, in <module>
    while(len(pseudolis)>0):
TypeError: object of type 'NoneType' has no len()

我不知道 pseudolis 何时从列表类型转换为无类型。 我尝试使用各种方法来查找 len。

【问题讨论】:

  • 甚至不确定地图使用的计划是什么。
  • @nucleon 已编辑。

标签: python python-2.7 list


【解决方案1】:

在您尝试对 pseudolis 切片进行排序后,您的代码失败:

pseudolis=pseudolis[1:].sort()

list.sort() 不返回列表,它返回None。拆分为:

pseudolis = pseudolis[1:]
pseudolis.sort()

【讨论】:

  • 我稍后会做的;错误在 while 部分。
  • 抱歉,知道了。非常感谢。
  • 这就是你的pseudolis 变成None 然后在下一次while 检查失败的地方。
猜你喜欢
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 2023-03-31
相关资源
最近更新 更多