如何计算2d列表中不同条目的数量?

时间:2014-08-19 10:47:32

标签: python list count 2d

我有一个2D列表,我想学习如何返回表中不同条目的数量。

numbers = [[32, 12, 52, 63], [32, 64, 67, 52], [64,64,17,34], [17, 76, 98]]

因为有10个不相同的数字我希望它返回那个数字,我该怎么做呢?

4 个答案:

答案 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}

python sets

答案 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))