1

结果是固定数量的数组,比方说中的列表(所有相同的长度) 。

人们也可以将其视为矩阵,因此在中我将使用一个数组,其中每个单元格都指向另一个数组。如何在 Python 中做到这一点?

一个列表,其中每个项目都是一个列表或其他东西?

我想到了一本字典,但键很简单,1、2、...、M,所以我不确定这是否是 pythonic 的方式。

我对实现不感兴趣,我感兴趣的是我应该遵循哪种方法,应该做出哪种选择!

4

2 回答 2

1

你可以在 python 列表中存储任何你想要的东西:整数、字符串、更多列表列表、字典、对象、函数——你可以命名它。

anything_goes_in_here = [1, 'one', lambda one: one / 1, {1: 'one'}, [1, 1]]

所以存储列表列表非常简单:

>>> list_1 = [1, 2, 3, 4]
>>> list_2 = [5, 6, 7, 8]
>>> list_3 = [9, 10, 11, 12]
>>> list_4 = [13, 14, 15, 16]
>>> main_list = [list_1, list_2, list_3, list_4]
>>> for list in main_list:
...     for num in list:
...             print num
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

如果您要存储索引有意义的列表列表(意味着索引为您提供有关存储在那里的数据的一些信息),那么这基本上是重新实现哈希图(字典),虽然您说这很简单 - 使用字典听起来很适合这里的问题。

于 2016-05-06T00:00:54.420 回答
1

无论您选择什么容器,它都应该包含 hash-itemID 对,并且应该按散列索引或排序。未排序的数组不会远程有效。

假设您使用的是大小合适的散列并且您的各种散列算法都得到了很好的实现,您应该能够同样有效地将所有 minhash 存储在一个容器中,因为一个算法的 minhash 和来自一个算法的 minhash 之间发生冲突的可能性另一个可以忽略不计,如果发生任何此类冲突,它不会显着改变相似性度量。

使用单个容器而不是多个容器减少了索引的内存开销,尽管它也略微增加了所需的处理量。由于内存通常是 minhash 的限制因素,因此单个容器可能更可取。

于 2017-09-26T00:47:46.890 回答