为什么在集合上出现“ TypeError:类型'int'的对象没有len()”的问题?

时间:2019-08-23 15:11:01

标签: python int set typeerror

我收到一个TypeError,说在集合上运行while循环时,类型为'int'的对象没有len()。

import random
l = random.sample(range(100), 20)

s = set()
print(s) 
print(len(s))
while len(s) < 4:
    s = random.choice(l)

我从打印语句(set()0)中获得了正确的输出,但是在到达while循环时却遇到了上述TypeError。

2 个答案:

答案 0 :(得分:1)

那是因为您的while循环正在s = random.choice(l)处将值切换为整数。参见:

import random
l = random.sample(range(100), 20)

s = set()
print(s) 
print(len(s))
while len(s) < 4:
    s = random.choice(l)
    print(s)

这将返回:

set()
0
50

,然后为您提供类型错误。因此,您会收到错误消息,因为s最初是一个集合,然后将其切换到int并通过while循环返回,并且没有len

答案 1 :(得分:1)

您需要将结果添加到set,否则您只是将set重新分配给random.choice的结果,intwhile len(s) < 4: s.add(random.choice(l)) :< / p>

{{1}}