0

例:

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

4

5 に答える 5

2

これを試してください(iterablesを「連結」するために使用される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
于 2012-05-24T21:58:02.060 に答える
2
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配列を調べることができます。

于 2012-05-24T21:41:38.250 に答える
1

@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>
于 2012-05-24T21:46:11.040 に答える
1
>>> x = [[1, 2, 2], [1, 1, 2]]
>>> unique_items = lambda n: len(set(n))
>>> map(unique_items, x)
[2, 2]
于 2012-05-24T21:43:04.667 に答える
0
compound_list = []
for sublist in lists:
    compound_list += sublist
len(set(compound_list))
于 2012-05-24T21:57:52.033 に答える