python shuffle和打印字符串,没有反向字符串

时间:2018-06-25 21:22:13

标签: python itertools

假设我有字符串s='AADD'。我使用了more_itertools和不同的排列,它们会打印出(AADD,ADDA,DDAA,ADAD,DADA,DAAD)

我的问题是,因为AADDDDAAADADDADA本质上是彼此的镜像,所以我想摆脱其中一个,如何我应该修改我的代码来实现这一目标吗?

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种可能的组合,我想知道是否有更快的方法来完成此任务。如果这个问题很愚蠢,请提前道歉,因为我没有参加任何编码课程,并且在做项目的同时正在学习编码自己。

3 个答案:

答案 0 :(得分:2)

这是不使用reverse / reversed的解决方案。这在逻辑上起作用,对于给定的字符串ww[::-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