标签: combinations

保留数据框中的行,对于某些列的值的所有组合,在另一列中包含相同的元素

df = pd.DataFrame({'a':['x','x','x','x','x','y','y','y','y','y'],'b':['z','z','z','w','w','z','z','w','w','w'],'c':['c1','c2','c3','c1','c3','c1','c3','c1','c2','c3'],'d':range(1,11)})

   a  b   c   d
0  x  z  c1   1
1  x  z  c2   2
2  x  z  c3   3
3  x  w  c1   4
4  x  w  c3   5
5  y  z  c1   6
6  y  z  c3   7
7  y  w  c1   8
8  y  w  c2   9
9  y  w  c3  10
Run Code Online (Sandbox Code Playgroud)

我怎么能只保留行,对于所有的组合ab,包含相同的值c?或者换句话说,如何与排除行c了仅在一些组合的现值ab

例如,只有c1andc3出现在aand b( [x,z] …

python combinations filter pandas

20
推荐指数
5
解决办法
808
查看次数

Linq的组合发电机

是否有可能创建一些Linq,生成一个包含一系列数字的所有可能组合的List?

如果输入"21",它将生成一个包含以下元素的列表:

list[0] = "21"
list[1] = "22"
list[2] = "11"
list[3] = "12"
Run Code Online (Sandbox Code Playgroud)

(不按顺序)

我知道你可以使用范围来做以下事情:

List<char> letterRange = Enumerable.Range('a', 'z' - 'a' + 1).Select(i => (Char)i).ToList(); //97 - 122 + 1 = 26 letters/iterations
Run Code Online (Sandbox Code Playgroud)

从az生成字母表.但我似乎无法转移这些知识来制作组合发生器

我已经能够用以下代码弄清楚它,但它似乎太笨重了,我相信它可以用几行完成.它确实感觉我做的是一个糟糕的解决方案.

想象一下,GetAllCombinations("4321")如果有帮助,我已经打过电话

public static String[] GetAllCombinations(String s)
{
    var combinations = new string[PossibleCombinations(s.Length)];

    int n = PossibleCombinations(s.Length - 1);

    for (int i = 0; i < s.Length; i++)
    {
        String sub;
        String[] subs;

        if (i == 0)
        {
            sub = s.Substring(1); //Get …
Run Code Online (Sandbox Code Playgroud)

c# linq combinations

19
推荐指数
3
解决办法
2万
查看次数

KeyListener如何检测组合键(例如,ALT + 1 + 1)

我怎样才能让我的自定义KeyListener听取ALT(或者CTRL说那个)+多个其他键的组合?

假设我希望应用程序执行11个不同的操作,具体取决于按下的键的组合.ALT + 0- ALT + 9显然不会造成任何问题,而对于ALT + 1 + 0(或"ALT + 10",因为它可以在帮助文件或类似文件中描述),我无法在网络上(或在我脑海中)的任何地方找到一个好的解决方案.我不相信这种带定时器的解决方案是唯一可行的方法.

提前一百万感谢您的任何建议!

编辑:操作0-9 +操作10 = 11个操作.谢谢@ X-Zero.

java swing combinations keyevent keylistener

19
推荐指数
2
解决办法
5万
查看次数

Ruby中数组哈希的所有可能组合

是)我有的:

假设我有这样的哈希值,各种值属于一个参数.

a = {}
a[:bitrate] = ["100", "500", "1000"]
a[:fps] = ["15", "30"]
a[:qp] = ["20", "30"]
Run Code Online (Sandbox Code Playgroud)

我需要的:

我需要一些方法来迭代地获得这些值的所有可能组合,因此,使用所有参数/值对:

  • bitrate = 100,fps = 15,qp = 20
  • bitrate = 500,fps = 15,qp = 30
  • ...

参数的数量(即键)和值的数量(即值阵列的长度)事先是未知的.理想情况下,我会做以下事情:

a.foo do |ret|
  puts ret.keys   # => ["bitrate", "fps", "qp"]
  puts ret.values # => ["100", "15", "20"]
end
Run Code Online (Sandbox Code Playgroud)

...为每个可能的组合调用块.我该如何定义foo


我(可能)不需要的东西:

现在,我知道这一点:将数组数组合成所有可能的组合,仅在Ruby中转发,建议类似于:

a.first.product(*a[1..-1]).map(&:join)
Run Code Online (Sandbox Code Playgroud)

但是这只对数组中的值和数组进行操作,我需要对参数名称的原始引用.

ruby hash combinations

19
推荐指数
1
解决办法
2666
查看次数

计数器跟踪数组内的多个值

这似乎有点复杂,所以我会尽我所能尽可能清楚.我正在寻找的特定功能动态创造了一笔钱.钱赢了一场赌博游戏的图表.

我有各种各样的用户可以下注的乐透.用户可以购买6件物品,每件物品有6个奖品:

在此输入图像描述

这些可以放入对象或数组中.

var prices = [5,10,28,50,56,280].

var possibleWins = [40,80,250,400,500,2500]

我正在尝试创建一个图表,计算每场比赛每项特定项目需要花多少钱来保证你获得金钱 - 在300场比赛中.

以下是图表应如何开始的示例:

在此输入图像描述

投资=最大可能的奖金+总花费(这是负数)

第二排假设第一场比赛已经发生并输了.等等.

我们的想法是从最小的项目开始,但即使你赢了也不会再让你积极的东西放弃.这就是为什么在第9排我们切换到岩石.(我们的投资是0,如果我们再次投球,我们赢得的最多就是40.所以即使我们赢了,我们实际上也会输掉5个.)

另外值得指出的是,如果你赢了1项; 你赢得了特定游戏的所有项目.所以你可以获得所有奖品.

我一直在研究这几天,其中一些相关的问题是我最初的尝试(但老实说我不知道​​):

如何在阵列中找到尽可能低的键组合

从上一个值之上的索引组合生成最低总和的计数器

添加数组密钥直到超出限制?

编辑:每场比赛必须至少购买1件商品,不能跳过游戏

javascript arrays counter combinations

19
推荐指数
1
解决办法
594
查看次数

创建具有特定位数的多个数字

问题

我需要创建32位数字(有符号或无符号无关紧要,最高位永远不会被设置),每个数字必须设置给定的位数.

天真的解决方案

最简单的解决方案当然是从零开始.在循环内,数字现在增加1,计数位数,如果计数具有所需值,则数字存储到列表中,否则循环重复.如果找到足够的数字,则停止循环.当然这很好用,但是一旦所需位数变得非常高,它就会非常慢.

更好的解决方案

具有(比方说)5位的最简单的数字是设置前5位的数字.这个号码可以很容易地创建.在循环内,第一个位置位,数字向左移一个.这个循环运行5次,我找到第一个设置了5位的数字.接下来的几个数字也很容易创建.我们现在假装数字为6位宽,最高位数未设置.现在我们开始将第一个零位向右移动,因此我们得到101111,110111,111011,111101,1111110.我们可以通过在前面添加另一个0并重复此过程来重复此操作.0111110,1011110,1101110等.然而,这种方式的数字增长速度将超过必要的速度,因为使用这种简单的方法,我们省略了数字,如1010111.

那么有没有更好的方法来创建所有可能的排列,一种可以使用的通用方法,无论下一个数字将包含多少位,无论我们需要设置多少个位?

algorithm binary combinations permutation

18
推荐指数
2
解决办法
5564
查看次数

在Python中解决难题

我有一个谜题,我想用Python解决它.

难题:

一个商人的重量为40公斤,他在他的店里使用.有一次,它从他的手上掉下来,分成4块.但令人惊讶的是,现在他可以通过这4件的组合称重1公斤到40公斤之间的任何重量.

所以问题是,这4件的重量是多少?

现在我想用Python解决这个问题.

我从拼图中得到的唯一约束是4个总和是40.我可以过滤掉总和为40的所有4个值的集合.

import itertools as it

weight = 40
full = range(1,41)
comb = [x for x in it.combinations(full,4) if sum(x)==40]
Run Code Online (Sandbox Code Playgroud)

length of comb = 297

现在我需要检查每组值comb并尝试所有操作组合.

例如,如果(a,b,c,d)是第一组值comb,我需要检查a,b,c,d,a+b,a-b, .................a+b+c-d,a-b+c+d........,依此类推.

我尝试了很多,但我陷入了这个阶段,即如何检查所有这些计算组合到每组4个值.

题 :

1)我想我需要列出所有可能的组合[a,b,c,d] and [+,-].

2)有没有人有更好的想法,告诉我如何从这里前进?

另外,我想完全没有任何外部库的帮助,只需要使用python的标准库.

编辑:对不起,迟到的信息.答案是(1,3,9,27),这是我几年前发现的.我检查并验证了答案.

编辑:目前,fraxel答案是完美的time = 0.16 ms.总是欢迎更好,更快的方法.

问候

方舟

python puzzle combinations permutation python-itertools

18
推荐指数
2
解决办法
2万
查看次数

找到所有组合的算法的时间复杂度是多少?

组合
给定两个整数n和k,返回1 ... n中k个数的所有可能组合.
例如,如果n = 4且k = 2,则解决方案是:

[
   [2, 4],
   [3, 4],
   [2, 3],
   [1, 2],
   [1, 3],
   [1, 4],
]
Run Code Online (Sandbox Code Playgroud)


我个人认为,
时间复杂度= O(n ^ k),n和k是输入.
谢谢你的帮助.
最后,时间复杂度= O(C(n,k)*k)= O((n!/(k!*(n - k)!))*k),n和k是输入,
因为,每次当我们得到一个组合时,我们需要将子列表列表复制到one_rest,即O(k),有C(n,k)*k.
C++

#include <vector>
using namespace std;

class Solution {
public:
    vector<vector<int> > combine(int n, int k) {
        vector<vector<int>> list;

        // Input validation.
        if (n < k) return list;

        int start = 1;
        vector<int> subList;
        helper(n, k, start, list, subList);

        return list;
    } …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm recursion big-o combinations

18
推荐指数
3
解决办法
2万
查看次数

找到一组的"最佳"组合

我有一个集合,sentences其中包含字符串形式的英语句子.我想创建的一个子集sentences,sentences2,其中包含只含有20个独特的单词的句子.当然,有很多很多这样的子集,但我正在寻找"最好"的子集,而"最好的"我指的是所有单词中具有最高可能表示的子集sentences2.

以下示例将进一步阐明"最佳"的含义:

如果我要过滤sentences这组词:

(i,you,do,think,yes,dont,can,it,good,cant,but,am,why,where,now,no,know,here,feel,are)
Run Code Online (Sandbox Code Playgroud)

我会得到以下内容:

sentences2 = set(("where are you now", "here i am", "can you do it", "yes i can", "but can i do it", "no you cant", "do you feel good", "yes i do", "why are you here", "i dont know", "i think i know why", "you dont think", "yes i do", "no you dont", "i dont think you think", "i feel good", "but i am good", "i …
Run Code Online (Sandbox Code Playgroud)

python algorithm statistics combinations linguistics

18
推荐指数
3
解决办法
2157
查看次数

在计算之前删除包含某些值的组合

给定列表和排除元素,是否可以忽略包含这些元素的组合的计算?

例1

鉴于l = [1, 2, 3, 4, 5],我想计算甚至在计算之前size 4包含的所有组合和排除组合(1, 3).

结果将是:

    All results:            Wanted results:

    [1, 2, 3, 4]            [1, 2, 4, 5]
    [1, 2, 3, 5]            [2, 3, 4, 5]
    [1, 2, 4, 5]
    [1, 3, 4, 5]
    [2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

已删除包含1和3的所有组合.

例2

由@Eric Duminil建议

结果l = [1, 2, 3, 4, 5, 6],size 4

python combinations python-itertools python-3.x

18
推荐指数
2
解决办法
1805
查看次数