gpt4 book ai didi

python - Itertools 生成乱码组合

转载 作者:太空宇宙 更新时间:2023-11-04 10:45:10 25 4
gpt4 key购买 nike

我想做的是获取所有组合以及每个组合的所有唯一排列。具有替换功能的组合只能让我到目前为止:

from itertools import combinations_with_replacement as cwr
foo = list(cwr('ACGT', n)) ## n is an integer

我对如何前进的直觉是做这样的事情:

import numpy as np
from itertools import permutations as perm
bar = []
for x in foo:
carp = list(perm(x))
for i in range(len(carp)):
for j in range(i+1,len(carp)):
if carp[i] == carp[j]:
carp[j] = ''
carp = carp[list(np.where(np.array(carp) != '')[0])]
for y in carp:
bar.append(y)
for i in range(len(bar)):
for j in range(i+1,len(bar)):
if bar[i] == bar[j]:
bar[j] = ''
bar = [bar[x2] for x2 in list(np.where(np.array(bar) != '')[0])]

有没有更高效的算法?

最佳答案

听起来您正在考虑一种“置换置换”,其中置换大小为 2 的 'AB' 输入将给出输出

AA
AB
BA
BB

如果是,那就是 Cartesian product输入本身 n 次。你想要 itertools.product:

>>> import itertools
>>> list(itertools.product('AB', repeat=2))
[('A', 'A'), ('A', 'B'), ('B', 'A'), ('B', 'B')]

关于python - Itertools 生成乱码组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17912298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com