假设我有字符串s='AADD'
。我使用了more_itertools
和不同的排列,它们会打印出(AADD,ADDA,DDAA,ADAD,DADA,DAAD)
。
我的问题是,因为AADD
和DDAA
,ADAD
和DADA
本质上是彼此的镜像,所以我想摆脱其中一个,如何我应该修改我的代码来实现这一目标吗?
import more_itertools
s = 'AADD'
#counting = 0
for i in more_itertools.distinct_permutations(s):
print(''.join(i))
#counting += 1
更新: 我还有一个关于大量数据处理的问题。假设我的字符串“ s”由50个字母而不是4个字母组成,我想知道“ more_itertools”中的“ distinct_permutation”是否是最有效的方式?我使用Mathematica来计算所有可能的组合,有超过10种可能的组合,我想知道是否有更快的方法来完成此任务。如果这个问题很愚蠢,请提前道歉,因为我没有参加任何编码课程,并且在做项目的同时正在学习编码自己。
答案 0 :(得分:2)
这是不使用reverse
/ reversed
的解决方案。这在逻辑上起作用,对于给定的字符串w
,w[::-1]
将是反向字符串。
>>> import more_itertools
>>> s_list = list(map(''.join, more_itertools.distinct_permutations('AADD')))
>>> [w for w in s_list if w <= w[::-1]]
['ADDA', 'DAAD', 'ADAD', 'AADD']
答案 1 :(得分:0)
您可以在此处使用INSERT INTO user__field_ip_address ('bundle', 'deleted', 'entity_id', 'revision_id', 'langcode', 'delta'. 'field_ip_address_ipv6', 'field_ip_address_ip_from', 'field_ip_address_ip_to')
VALUES ($bundle, $deleted, $entity_id, $revision_id, $langcode, $delta. $field_ip_address_ipv6, UNHEX($field_ip_address_ip_from), UNHEX($field_ip_address_ip_to))
ON DUPLICATE KEY
UPDATE 'bundle' = $bundle,
'field_ip_address_ipv6' = $field_ip_address_ipv6,
'field_ip_address_ip_from' = UNHEX($field_ip_address_ip_from),
'field_ip_address_ip_to' = UNHEX($field_ip_address_ip_to);
:
reversed()
输出:
import more_itertools
s = 'AADD'
options = [i for i in more_itertools.distinct_permutations(s)]
no_mirrors = []
for i in options:
if tuple(reversed(i)) not in no_mirrors:
no_mirrors.append(i)
for i in no_mirrors:
print(''.join(i))
答案 2 :(得分:0)
利用“大于或等于”运算符可在python中的序列上工作的事实,而无需临时集或列表的简单单行解决方案:
MapPath