from typing import Any, Tuple


def 取重复成员列表(元组数据: Tuple[Any, ...]) -> Tuple[Any, ...]:
    """返回元组中的重复成员列表。

    功能说明:
        - 这个函数用于返回元组中的重复成员列表。
        - 常用于从元组中读取某个成员、某一段数据，或者计算出一个统计结果。
        - 如果当前数据不适合处理，函数会返回约定好的结果，方便新手直接判断这次是否成功取到值。

    说明:
        - 每种重复成员仅保留一次。
        - 返回顺序按其“首次被判定为重复”的先后顺序。

    Args:
        元组数据: 待统计的元组。

    Returns:
        成功时返回重复成员元组；失败时返回空元组 ``()``。
    """
    try:
        if not isinstance(元组数据, tuple):
            return ()

        已见成员 = []
        重复成员 = []
        for 元素 in 元组数据:
            if 元素 in 已见成员:
                if 元素 not in 重复成员:
                    重复成员.append(元素)
            else:
                已见成员.append(元素)
        return tuple(重复成员)
    except Exception:
        return ()


if __name__ == "__main__":
    print("===== 示例1：基础重复成员列表 =====")
    数据 = (1, 2, 1, 3, 2, 4)
    print("结果:", 取重复成员列表(数据))

    print("\n===== 示例2：全部唯一 =====")
    数据 = ("a", "b", "c")
    print("结果:", 取重复成员列表(数据))

    print("\n===== 示例3：同一成员多次重复只保留一次 =====")
    数据 = ("a", "a", "a", "b")
    print("结果:", 取重复成员列表(数据))

    print("\n===== 示例4：空元组 =====")
    数据 = ()
    print("结果:", 取重复成员列表(数据))

    print("\n===== 示例5：包含不可哈希成员 =====")
    数据 = ([1], [1], {"x": 1}, {"x": 1}, [2])
    print("结果:", 取重复成员列表(数据))

    print("\n===== 示例6：应用场景-找出重复的标签项 =====")
    标签列表 = ("已支付", "待发货", "已支付", "高优先级", "待发货")
    print("结果:", 取重复成员列表(标签列表))



