from typing import Any, Tuple


def 二维元组取第1列(元组数据: Tuple[Tuple[Any, ...], ...]):
    """提取二维元组中每行的第 1 列。

    Args:
        元组数据: 由多个子元组组成的二维元组。

    Returns:
        成功时返回提取后的新元组；失败时返回空元组 ``()``。
    """
    try:
        if not isinstance(元组数据, tuple):
            return ()
        结果 = []
        for 项 in 元组数据:
            if not isinstance(项, tuple) or len(项) < 1:
                return ()
            结果.append(项[0])
        return tuple(结果)
    except Exception:
        return ()


if __name__ == "__main__":
    print("===== 示例1：正常提取第1列 =====")
    数据 = (("张三", 18), ("李四", 20), ("王五", 22))
    print("结果:", 二维元组取第1列(数据))

    print("\n===== 示例2：空二维元组 =====")
    数据 = ()
    print("结果:", 二维元组取第1列(数据))

    print("\n===== 示例3：存在非法子项 =====")
    数据 = (("张三", 18), "错误项")
    print("结果:", 二维元组取第1列(数据))

    print("\n===== 示例4：子元组长度不一致但第1列仍可取 =====")
    数据 = (("张三", 18), ("李四", 20, "技术部"))
    print("结果:", 二维元组取第1列(数据))

    print("\n===== 示例5：成员类型混合 =====")
    数据 = ((1, "a"), (2, None), (3, {"x": 1}))
    print("结果:", 二维元组取第1列(数据))

    print("\n===== 示例6：应用场景-批量提取订单编号 =====")
    订单数据 = (
        ("ORD-001", "张三", 199.0, "已付款"),
        ("ORD-002", "李四", 88.5, "待付款"),
        ("ORD-003", "王五", 320.0, "已发货"),
    )
    print("结果:", 二维元组取第1列(订单数据))
