草庐IT

排列去重

全部标签

python - 二进制序列 x 位长的所有排列

我想找到一种干净而聪明的方法(在python中)来查找长度为1和0x字符的字符串的所有排列。理想情况下,这会很快,并且不需要进行太多迭代......所以,对于x=1,我想要:['0','1']x=2['00','01','10','11']等等。现在我有这个,它很慢而且看起来不优雅:self.nbits=nitems=[]forxinxrange(n+1):ones=xzeros=n-xitem=[]foriinxrange(ones):item.append(1)foriinxrange(zeros):item.append(0)items.append(item)perms=set

python - 如何在numpy中反转排列数组

给定一个自索引(不确定这是否是正确的术语)numpy数组,例如:a=np.array([3,2,0,1])这表示permutation(=>是一个箭头):0=>31=>22=>03=>1我正在尝试制作一个表示逆变换的数组,而不是在python中“手动”执行它,也就是说,我想要一个purenumpy解决方案。在上述情况下我想要的结果是:array([2,3,1,0])相当于02132130看起来很简单,但我就是想不出怎么做。我试过谷歌搜索,但没有找到任何相关信息。 最佳答案 简答definvert_permutation(p):"""

python - 如何根据索引数组重新排列数组

我正在寻找一种可以帮助我执行以下操作的单行解决方案。假设我有array=np.array([10,20,30,40,50])我想根据输入顺序重新排列它。如果有一个名为arrange的numpy函数,它将执行以下操作:newarray=np.arrange(array,[1,0,3,4,2])printnewarray[20,10,40,50,30]形式上,如果要重新排序的数组是mxn,而“index”数组是1xn,则排序将由名为“index”的数组确定。numpy有这样的功能吗? 最佳答案 您可以直接使用“索引”列表,也可以使用索引

python - python中两个列表的排列

我有两个列表,例如:list1=['square','circle','triangle']list2=['red','green']如何创建这些列表的所有排列,如下所示:['squarered','squaregreen','redsquare','greensquare','circlered','circlegreen','redcircle','greencircle','trianglered','trianglegreen','redtriangle','greentriangle']我可以为此使用itertools吗? 最佳答案

python - 有效地计算组合和排列

我有一些代码来计算排列和组合,我正在努力让它更好地处理大数。我找到了一种更好的排列算法,可以避免大量中间结果,但我仍然认为我可以在组合方面做得更好。到目前为止,我已经放入了一个特殊情况来反射(reflect)nCr的对称性,但我仍然想找到一个更好的算法来避免调用factorial(r),这是一个不必要的大中间结果。如果没有这种优化,最后一个doctest会花费很长时间来计算阶乘(99000)。谁能建议一种更有效的组合计数方法?frommathimportfactorialdefproduct(iterable):prod=1forniniterable:prod*=nreturnpro

python - Python中一组列表的所有可能排列

在Python中,我有一个包含n个列表的列表,每个列表都有可变数量的元素。如何创建一个包含所有可能排列的列表:例如[[a,b,c],[d],[e,f]]我想要[[a,d,e],[a,d,f],[b,d,e],[b,d,f],[c,d,e],[c,d,f]]请注意,我事先并不知道n。我认为itertools.product是正确的方法,但它需要我提前知道参数的数量 最佳答案 使用itertools.product不需要提前知道n>>>importitertools>>>s=[['a','b','c'],['d'],['e','f']]

python - 改组/排列 Pandas 中的DataFrame

在pandas中按行或按列对数据帧进行洗牌的简单而有效的方法是什么?IE。如何编写函数shuffle(df,n,axis=0)这需要一个数据帧,许多洗牌n,和一个轴(axis=0是行,axis=1是列)并返回已洗牌的数据帧的副本n次。编辑:关键是在不破坏数据框的行/列标签的情况下执行此操作。如果你只是洗牌df.index这会丢失所有这些信息。我想要结果df除了行的顺序或列的顺序不同之外,与原来的相同。Edit2:我的问题不清楚。当我说洗牌时,我的意思是独立洗牌每一行。因此,如果您有两列a和b,我希望每一行都自己洗牌,这样你在a之间就没有相同的关联。和b就像您只是将每一行作为一个整体重新

python - 在python中查找给定字符串的所有可能排列

我有一个字符串。我想通过更改其中字符的顺序来从该字符串生成所有排列。例如,说:x='stack'我想要的是这样的列表,l=['stack','satck','sackt'.......]目前我正在迭代字符串的列表转换,随机选择2个字母并将它们转置以形成一个新字符串,并将其添加到l的集合转换。根据字符串的长度,我正在计算可能的排列数量并继续迭代,直到设置大小达到限制。必须有更好的方法来做到这一点。 最佳答案 itertools模块有一个有用的方法,称为permutations()。Thedocumentation说:itertools

java - 存储所有排列的模式数据库

我正在寻找一些关于存储条纹图案数据库的所有可能排列的建议。所以十五个瓷砖问题有16个!可能的排列,但是存储fringe的值,因此0(空白图block)、3、7、11、12、13、14、15是16!/(16-8)!=518,918,400个排列。我希望将所有这些排列与启发式函数的值一起存储在数据结构中(每次迭代广度优先搜索时都会递增),到目前为止,我正在这样做,但速度非常缓慢,并且采取了我5分钟存储60,000这是我没有的时间!目前我有一个看起来像这样的结构。ValuePos0Pos3Pos7Pos11Pos12Pos13Pos14Pos15我存储给定数字的位置的位置。当我计算启发式值时

java - 在Java中将两个arrayLists合并为一个新的arrayList,没有重复且按顺序排列

我正在尝试“组合”两个数组列表,生成一个新的数组列表,其中包含两个组合数组列表中的所有数字,但没有任何重复的元素,它们应该是有序的。我想出了下面的这段代码。我浏览了一遍,这对我来说很有意义,但我不确定我是否可以使用来比较arrayLists中的get(i)。我将array1中的所有元素添加到plusArray中。然后我将检查plusArray并将其与array2进行比较,以查看在plusArray中是否存在任何array2的元素。如果他们这样做,我什么也不做,但如果他们不这样做,那么我会尝试将其添加到正确的位置。也许我的嵌套for循环使用不正确?注意:ArrayLists是由用户按升序