我有一个2D列表,我想学习如何返回表中不同条目的数量。
numbers = [[32, 12, 52, 63], [32, 64, 67, 52], [64,64,17,34], [17, 76, 98]]
因为有10个不相同的数字我希望它返回那个数字,我该怎么做呢?
答案 0 :(得分:2)
在集合理解中展平列表以删除重复
print len({x for y in numbers for x in y})
10
或者创建一个集合并使用set.update
:
s = set()
s.update(*numbers)
print len(s)
10
In [1]: numbers = [[32, 12, 52, 63], [32, 64, 67, 52], [64,64,17,34], [17, 76, 98]]
In [2]: s = set()
In [3]: s.update(*numbers)
In [4]: s
Out[4]: {12, 17, 32, 34, 52, 63, 64, 67, 76, 98}
答案 1 :(得分:2)
将嵌套列表转换为集合并获取其长度,如下所示:
numbers = [[32, 12, 52, 63], [32, 64, 67, 52], [64,64,17,34], [17, 76, 98]]
numbers_set = set(i for j in numbers for i in j)
print(len(numbers_set)) # 10
Sets是没有重复元素的容器,这意味着set([1, 1, 2]) -> {1, 2}
。然后,可以使用集合的长度来查找嵌套列表中最初的不同值的数量。
答案 2 :(得分:1)
以下是获取不同数量的最简单方法
len(set(sum(numbers, [])))
答案 3 :(得分:0)
鉴于 mylist
:
all_words = [item for sublist in mylist for item in sublist]
distinct_no_of_words = len(set(all_words))