(感应式)k是至少一且可迭代对象具有至少一个元素。选择可迭代的第一个元素并将其添加到子问题的每个组合中,(it[1:], k - 1)。并且不要选择这个元素并从子问题中产生,(it[1:], k).
def choosek(it, k):
if k == 0: # 1
yield ()
elif not it: # 2
return
else: # 3
for c in choosek(it[1:], k - 1):
yield (*c, it[0])
yield from choosek(it[1:], k)
for c in choosek("????????????????", 2):
print("".join(c))