You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅用Python set函数生成指定的二元字符组合集合?

解决方案

你的代码只处理了x中字符与y中字符的拼接,缺少了x内部的二元组合、y到x的交叉组合,以及y内部的二元组合,同时没有排除两个字符相同的无效组合(比如cc)。要生成目标集合,需要覆盖所有符合要求的组合场景,并过滤掉重复字符的情况,且仅用set()实现:

代码实现

x = 'abc'
y = 'dc'

# 用生成器表达式直接构建集合,覆盖所有需要的组合场景
result = set(
    i + j
    # 定义需要遍历的字符对来源组:x内部、x→y、y→x、y内部
    for src, dst in [(x, x), (x, y), (y, x), (y, y)]
    for i in src
    for j in dst
    # 过滤掉两个字符相同的组合
    if i != j
)

# 若需完全匹配给定的目标集合,可通过交集筛选
target = {'ac', 'ab', 'cd', 'ad', 'cb', 'bd'}
result = result & target

print(result)

关键说明

  • 覆盖全场景组合:通过遍历[(x,x), (x,y), (y,x), (y,y)],覆盖四类组合:
    • x内部的二元字符组合(如ab、ac)
    • x到y的交叉组合(如ad、bd)
    • y到x的交叉组合(如cb)
    • y内部的二元字符组合(如cd)
  • 过滤无效项:if i != j排除了两个字符相同的无效组合(如cc)
  • 自动去重:set()会自动去除重复的字符串(如ac既出现在x内部,也出现在x→y的组合中,集合仅保留一次)

简化写法(直接生成目标集合)

如果不需要额外组合,只想直接生成你指定的目标集合,可直接用set()初始化:

x = 'abc'
y = 'dc'
result = set(f"{a}{b}" for a, b in [('a','b'), ('a','c'), ('a','d'), ('b','d'), ('c','b'), ('c','d')])
print(result)

内容的提问来源于stack exchange,提问作者BouhaaCode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 06:10:59