微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 itertools 产品但需要组合行为

如何解决使用 itertools 产品但需要组合行为

我试图从输入中生成可能的字符串列表,考虑通配符“?”和 ”*”。列表项的排序应该无关紧要,这意味着如果列表中已经存在 ABC,那么我不想添加 ACB 或任何其他排序(处理速度问题)。我使用的代码如下:

import itertools
from itertools import permutations

##################################################### 
def getWordsFromTiles(tiles,word):
#####################################################   
    return all(word.count(i) <= tiles.count(i) for i in word)

#####################################################
Main
#####################################################     
    chars = A?*
    
    wilds = [
        ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z')
        if char == "?" or char == "*" else (char) for char in chars]
    
    for p in itertools.product(*wilds):
        x = ''.join(p)
        hits.extend([word for word in data if getWordsFromTiles(x.upper(),word) and word not in hits])

这会生成一个如下所示的列表:

A,A,A
A,B
A,C
.....
A,B,A

我实际上并不关心这些列表的顺序,所以当我已经生成了“A,A,B。任何想法如何实现它?

解决方法

实际上并不关心这些列表的顺序,所以当我已经生成“A,A,B”时,我希望没有A,B,A。

这是您要找的吗?

from itertools import combinations_with_replacement

s = ['A','B','C','D']

list(combinations_with_replacement(s,3))
[('A','A','A'),('A','B'),'C'),'D'),'D',('B',('C',('D','D')]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?