列表的Python问题(类型错误:“NoneType”对象不可迭代)

bhmjp9jg  于 2023-01-27  发布在  Python
关注(0)|答案(3)|浏览(185)

我有一个列表,我正在进行比较,以检查列表中是否存在某组值,并返回true或false。
下面是我所尝试的:

l1 = ['apples,oranges,bananas,pears']   <<- list 1
l2 = ['apples,'tomatoes']               <<- list 2
b2 = set(l1).intersection(l2)       <<- comparing the 2 lists

在执行上述操作时,我得到一个错误:

TypeError: 'NoneType' object is not iterable

我相信上面的错误意味着没有数据,但我知道第二个列表(l2)确实有一个值。即使列表中有一个值匹配,我也希望得到一个True标志。有人能帮忙吗?谢谢

g0czyy6m

g0czyy6m1#

创建如下列表:

In [369]: l1 = ['apples','oranges','bananas','pears']
In [357]: l2 = ['apples','tomatoes']

然后做交集:

In [370]: set(l1).intersection(l2)
Out[370]: {'apples'}
fslejnso

fslejnso2#

你忘了引用,在两个列表中。

l1 = ['apples', 'oranges', 'bananas', 'pears']
l2 = ['apples','tomatoes']
b2 = set(l1).intersection(set(l2))

详细地说,在你的例子中,你所比较的是字符串'apple,oranges,bananas,pears','apples','tomato'(只提供了一个引号,否则它将无法编译)。很明显,这些集合的交集是一个空集合。这就是你所得到的,imo。

wlsrxk51

wlsrxk513#

TypeError: 'NoneType' object is not iterable

当你的列表是不可迭代的时候就会发生这个错误。也就是说当你有一个空列表并且使用for循环来迭代它的时候。有很多方法可以处理这个错误,但是,最好的解决方法是

If not list:
  print('List object is not iterable as it is empty!!')

但在你的例子中,这是一个人为错误,没有在单词/句子结束后使用引号。

l1 = ['apples','oranges','bananas','pears']  
l2 = ['apples','tomatoes']           
b2 = set(l1).intersection(l2)

这应该可以了。:)

相关问题