繁体   English   中英

找到一个充满给定项目的子列表并替换它

[英]Find a sublist full of given item and replace it

假设我有以下列表

[1, 1, 1, 1, 2, 1, 3, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 3, 1, 1, 2, 2, 1, 2, 1, 1, 3, 1, 1, 1, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 3, 1, 1, 2, 1, 3, 2, 1, 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 3, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 3, 1, 1, 2, 1, 1, 2, 5, 4, 3, 1, 2, 2, 1, 1, 1, 1, 2, 3, 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 1, 2, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 2, 3, 1, 1, 3, 2, 1, 1, 2, 3, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 4, 2, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 3, 1, 1, 1, 4, 1, 1, 1, 1, 1, 3, 1, 2, 1, 2, 3, 1, 1, 2, 2, 1, 4, 1, 2, 1, 1, 1, 3, 1, 1, 3, 2, 1, 2, 2, 1, 2, 1, 2, 3, 1, 1, 1, 3, 2, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 2, 1, 1, 2, 1, 1, 3, 1, 1, 3, 1, 1, 4, 1, 2, 1, 1, 3, 3, 4, 2, 2, 5, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 4, 3, 1, 1, 1, 3, 1, 1, 1, 2, 1, 3, 4, 2, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 3, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 4, 1, 1, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 5, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 4, 2, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, 2, 2, 1, 3, 4, 2, 1, 1, 2, 1, 2, 1, 3, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 2, 1, 1, 4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 3, 1, 1, 3, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 2, 2, 3, 1, 4, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 5, 1, 1, 1, 2, 1, 1, 1, 2, 1, 4, 1, 3, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 1, 2, 4, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 2, 1, 1, 2, 1, 3, 1, 2, 1, 1, 4, 2, 1, 1, 3, 3, 2, 2, 1, 1, 1, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 1, 2, 1, 1, 3, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 4, 1, 3, 2, 2, 1, 1, 3, 1, 2, 2, 1, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 1, 2, 2, 4, 3, 4, 2, 1, 1, 1, 1, 1, 2, 2, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 2, 4, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 1, 2, 1, 2, 2, 3, 4, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 2, 4, 2, 1, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2]

我想要做的是将所有相同的值组合成字符串。 例如

[1,1,1,1,1,1,1,2,3,1,1,1,2,2,2,2,3,3,4,5,1,1]

应该组成如下

["1x7",2,3,"1x3","2x4","3x2",4,5,"1x2"]

我认为将以下每个值相乘并检查它们的乘积是否不同于 1、4、9、16、25 可以在某种程度上起作用,但是当涉及到更大的列表时,这还不够。

python 是否提供了快捷方式?

您可以使用itertools.groupby收集相同值的连续运行。

from itertools import groupby
def condense(group):
    values = list(group)
    if len(values) > 1:
        return '{}x{}'.format(values[0], len(values))
    else:
        return values[0]

您可以在列表中使用此 function

>>> data = [1, 1, 1, 1, 2, 1, 3, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 3, 1, 1, 2, 2, 1, 2, 1, 1, 3, 1, 1, 1, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 3, 1, 1, 2, 1, 3, 2, 1, 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 3, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 3, 1, 1, 2, 1, 1, 2, 5, 4, 3, 1, 2, 2, 1, 1, 1, 1, 2, 3, 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 1, 2, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 2, 3, 1, 1, 3, 2, 1, 1, 2, 3, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 4, 2, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 2, 1, 1, 3, 3, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 3, 1, 1, 1, 4, 1, 1, 1, 1, 1, 3, 1, 2, 1, 2, 3, 1, 1, 2, 2, 1, 4, 1, 2, 1, 1, 1, 3, 1, 1, 3, 2, 1, 2, 2, 1, 2, 1, 2, 3, 1, 1, 1, 3, 2, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 2, 1, 1, 2, 1, 1, 3, 1, 1, 3, 1, 1, 4, 1, 2, 1, 1, 3, 3, 4, 2, 2, 5, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 4, 3, 1, 1, 1, 3, 1, 1, 1, 2, 1, 3, 4, 2, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 3, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 4, 1, 1, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 5, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 4, 2, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, 2, 2, 1, 3, 4, 2, 1, 1, 2, 1, 2, 1, 3, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 2, 1, 1, 4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 3, 1, 1, 3, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 2, 2, 3, 1, 4, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 5, 1, 1, 1, 2, 1, 1, 1, 2, 1, 4, 1, 3, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 1, 2, 4, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 2, 1, 1, 2, 1, 3, 1, 2, 1, 1, 4, 2, 1, 1, 3, 3, 2, 2, 1, 1, 1, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 1, 2, 1, 1, 3, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 4, 1, 3, 2, 2, 1, 1, 3, 1, 2, 2, 1, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 1, 2, 2, 4, 3, 4, 2, 1, 1, 1, 1, 1, 2, 2, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 2, 4, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 1, 2, 1, 2, 2, 3, 4, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 2, 4, 2, 1, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2]
>>> [condense(g) for k,g in groupby(data)]
['1x4', 2, 1, 3, 2, 1, '2x2', 1, '2x2', '1x4', 3, '1x2', '2x2', 1, 2, '1x2', 3, '1x4', '2x2', 1, 2, 1, 2, 1, 2, '1x2', 3, '1x7', 2, 1, 2, '1x8', 2, '1x4', '2x2', 3, '1x2', 2, 1, 3, 2, '1x2', 2, 1, '2x2', '1x13', 2, '1x3', '2x2', '1x2', '2x2', '1x3', '2x2', '1x4', 2, '1x3', 2, '1x2', 2, 1, 3, 2, '1x6', 2, '1x2', 3, '1x5', 3, '1x2', 3, '1x2', 2, '1x2', 2, 5, 4, 3, 1, '2x2', '1x4', 2, 3, '1x2', '2x6', 1, 2, '1x6', 2, 3, '1x2', 2, 1, 2, '1x2', 2, 3, '1x8', 4, '1x2', 2, 3, '1x2', 3, 2, '1x2', 2, 3, 1, '2x3', 1, '2x2', '1x3', 2, 3, '1x6', 4, 2, '1x3', 2, 1, '2x4', 1, 2, '1x2', '3x2', '1x2', 2, '1x3', '2x2', '1x2', 2, 3, '1x3', 4, '1x5', 3, 1, 2, 1, 2, 3, '1x2', '2x2', 1, 4, 1, 2, '1x3', 3, '1x2', 3, 2, 1, '2x2', 1, 2, 1, 2, 3, '1x3', 3, 2, 1, 2, '1x2', '2x2', '1x10', '2x2', '1x3', '2x2', '1x2', 2, '1x2', 2, '1x3', 3, '1x3', 2, '1x2', 2, '1x2', 2, '1x2', 3, '1x2', 3, '1x2', 4, 1, 2, '1x2', '3x2', 4, '2x2', 5, '1x8', 3, 4, '1x6', 2, 1, 2, '1x2', 4, 3, '1x3', 3, '1x3', 2, 1, 3, 4, '2x3', '1x2', '2x2', '1x6', 2, 3, '1x2', 2, 3, '1x2', '2x2', '1x2', 2, '1x6', 2, '1x2', 4, '1x2', 3, 4, '1x20', '2x2', 1, '2x2', 1, 2, 1, '2x3', 1, '2x2', '1x3', 5, '1x2', 3, '1x7', '2x2', 3, 4, 2, '1x5', 3, '1x4', 3, '2x2', 1, 3, 4, 2, '1x2', 2, 1, 2, 1, 3, 1, 2, '1x5', 2, '1x3', 2, '1x5', 2, '1x3', 3, 2, '1x2', 4, '1x3', 2, '1x8', 2, 1, 3, '1x2', 3, '1x2', '2x2', '1x2', 2, '1x4', 2, '1x2', '2x2', '1x4', 2, 1, 2, '1x2', 2, '1x4', '2x2', 3, 1, 4, '1x2', 2, '1x6', 2, '1x2', 2, 5, '1x3', 2, '1x3', 2, 1, 4, 1, '3x2', '1x3', 3, '1x6', 2, 1, 2, '1x15', 2, '1x4', '2x2', '1x9', 2, '1x8', 2, '1x3', 2, '1x3', 2, 1, '2x2', 1, '2x2', '1x2', '2x2', 3, 1, 2, 1, '2x2', '1x4', 2, 4, '1x4', '2x2', '1x3', 2, '1x2', 2, '1x10', 2, '1x4', 2, 1, 3, 2, '1x11', 2, '1x5', 2, '1x2', '2x2', '1x3', 2, '1x2', 2, 1, 3, 1, 2, '1x2', 4, 2, '1x2', '3x2', '2x2', '1x3', 4, 3, 2, '1x10', 2, '1x3', '2x2', '1x2', '2x2', '1x6', '2x2', '1x2', 2, '1x2', 2, '1x2', 3, '1x3', 2, '1x3', '2x2', '1x2', 2, '1x2', 2, '1x2', 2, '1x2', 3, '1x2', 2, '1x2', '2x2', '1x4', '2x2', '1x3', 4, 1, 3, '2x2', '1x2', 3, 1, '2x2', 1, '2x2', 3, '1x16', '2x2', '1x7', 3, '1x5', 2, '1x5', 2, '1x5', '2x2', '1x4', 2, '1x2', 2, '1x2', 3, '1x3', 3, '1x4', '2x2', 4, 3, 4, 2, '1x5', '2x3', 3, '1x4', 2, '1x5', 2, '1x4', 2, '1x2', 2, 1, 2, 4, '1x4', '2x2', '1x2', 2, '1x4', 3, '1x3', 3, '1x4', 2, 1, '2x2', 3, 4, '1x2', '2x2', '1x8', 3, 2, '1x2', 3, '1x33', 2, '1x2', 2, '1x3', 2, 3, '1x5', 2, '1x6', 2, '1x5', 2, '1x2', 2, 1, '2x2', '1x5', 2, '1x2', 2, '1x8', 2, '1x3', '2x2', '1x2', 2, '1x9', 3, 2, '1x5', 2, '1x7', 3, '2x2', '1x5', 2, '1x3', 2, '1x10', 3, 1, 2, '1x3', '2x2', '1x2', 2, '1x2', 2, 4, 2, 1, 3, '1x2', 2, '1x6', 2]

如果您只是希望这些数据占用更少的空间,您可以使用字典,其中项目作为键,它们在列表中的出现次数作为值。 我使用set删除重复项,然后创建字典。

a = [1,1,1,1,1,1,1,2,3,1,1,1,2,2,2,2,3,3,4,5,1,1]
d = {i:a.count(i) for i in set(a)}
print(d)

output:

{1: 12, 2: 5, 3: 3, 4: 1, 5: 1}

读取和写入字典比那种形式的字符串要容易得多。 您也可以简单地将字典存储为JSON文件。

更新

因此,如果元素的顺序很重要。 你可以这样做:

a = [1,1,1,1,1,1,1,2,3,1,1,1,2,2,2,2,3,3,4,5,1,1]
b = []
count = 1
for i in range(1,len(a)):
    if a[i-1] != a[i]:
        b.append((a[i-1],count))
        count = 0
    count += 1
b.append((a[-1],count))
print(b)

output:

[(1, 7), (2, 1), (3, 1), (1, 3), (2, 4), (3, 2), (4, 1), (5, 1), (1, 2)]

它将遍历列表并创建一个元组,其中项目作为其第一个元素,其计数作为第二个元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM