例子:
help([[1, 2, 2], [1, 1, 2]])
应该返回 2。
def help(num):
lst = ()
for n in num:
return(len(lst))
所以我需要表中所有数字的总和。
另一个例子:
help([[32, 12, 52, 63], [32, 64, 67, 52], [64, 64, 17, 34], [34, 17, 76, 32]])
返回:9
例子:
help([[1, 2, 2], [1, 1, 2]])
应该返回 2。
def help(num):
lst = ()
for n in num:
return(len(lst))
所以我需要表中所有数字的总和。
另一个例子:
help([[32, 12, 52, 63], [32, 64, 67, 52], [64, 64, 17, 34], [34, 17, 76, 32]])
返回:9
试试这个(itertools.chain用于“连接”可迭代对象):
table = [ [32, 12, 52, 63],
[32, 64, 67, 52],
[64, 64, 17, 34],
[34, 17, 76, 32] ]
from itertools import chain
n_unique_values = len(set( chain(*table) ))
print n_unique_values # prints 9
def allElementsInTable(table):
for row in table:
for elem in row:
yield elem
演示:
>>> set(allElementsInTable([[1,2,2],[1,1,2]]))
{1,2}
>>> len(set(allElementsInTable([[1,2,2],[1,1,2]])))
2
如果您进行大量表操作,您可能希望查看numpy
数组。
>>> x = [[1, 2, 2], [1, 1, 2]]
>>> unique_items = lambda n: len(set(n))
>>> map(unique_items, x)
[2, 2]
@garnertb 当然是正确的,但是为了 Python 的乐趣:
>>> x = [[1, 2, 2], [1, 1, 2]]
>>> map(len, map(set, x))
[2, 2]
编辑:此页面上的此解决方案和其他解决方案的一个问题是,如果 x 变长,它的扩展性会很差。我很想:
>>> import itertools
>>> itertools.imap(len, itertools.imap(set, x))
<itertools.imap object at 0xb7437b8c>
compound_list = []
for sublist in lists:
compound_list += sublist
len(set(compound_list))