Допустим, у меня есть список Python, который может содержать любую комбинацию членов из следующих двух кортежей:Обеспечит только один член подсписка присутствует в списке Python
legal_letters = ('a', 'b', 'c')
legal_numbers = (1, 2, 3)
Так правовые списки комбинации будут включать
combo1 = ['a', 1, '3']
combo2 = ['c']
combo3 = ['b', 2, 1, 'c']
Любая длина, любая комбинация. Вы можете предположить, что в списке комбинаций не будут дублироваться символы. Я хотел бы применить функцию к тем комбинациям, которые их модифицируют (на месте), так что они содержат не более одного члена одного из кортежей - скажем, это числа. «Избранный» член набора чисел следует выбирать произвольно. Мне также все равно, если порядок будет искажен в процессе.
def ensure_at_most_one_number(combo):
# My first attempts involved set math and a while loop that was
# pretty gross, I'll spare you guys the details. I'm sure I could get it to work
# but I figured there might be a one-liner or some fancy itertools out there
return combo
# Post transformation
combo1 = ['a', '1']
combo2 = ['c']
combo3 = ['c', 'b', 2] # Mangled order, not a problem