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)
我怎么能只保留行,对于所有的组合a和b,包含相同的值c?或者换句话说,如何与排除行c了仅在一些组合的现值a和b?
例如,只有c1andc3出现在aand b( [x,z] …
是否有可能创建一些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) 我怎样才能让我的自定义KeyListener听取ALT(或者CTRL说那个)+多个其他键的组合?
假设我希望应用程序执行11个不同的操作,具体取决于按下的键的组合.ALT + 0- ALT + 9显然不会造成任何问题,而对于ALT + 1 + 0(或"ALT + 10",因为它可以在帮助文件或类似文件中描述),我无法在网络上(或在我脑海中)的任何地方找到一个好的解决方案.我不相信这种带定时器的解决方案是唯一可行的方法.
提前一百万感谢您的任何建议!
编辑:操作0-9 +操作10 = 11个操作.谢谢@ X-Zero.
假设我有这样的哈希值,各种值属于一个参数.
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 = 20bitrate = 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)
但是这只对数组中的值和数组进行操作,我需要对参数名称的原始引用.
这似乎有点复杂,所以我会尽我所能尽可能清楚.我正在寻找的特定功能动态创造了一笔钱.钱赢了一场赌博游戏的图表.
我有各种各样的用户可以下注的乐透.用户可以购买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件商品,不能跳过游戏
我需要创建32位数字(有符号或无符号无关紧要,最高位永远不会被设置),每个数字必须设置给定的位数.
最简单的解决方案当然是从零开始.在循环内,数字现在增加1,计数位数,如果计数具有所需值,则数字存储到列表中,否则循环重复.如果找到足够的数字,则停止循环.当然这很好用,但是一旦所需位数变得非常高,它就会非常慢.
具有(比方说)5位的最简单的数字是设置前5位的数字.这个号码可以很容易地创建.在循环内,第一个位置位,数字向左移一个.这个循环运行5次,我找到第一个设置了5位的数字.接下来的几个数字也很容易创建.我们现在假装数字为6位宽,最高位数未设置.现在我们开始将第一个零位向右移动,因此我们得到101111,110111,111011,111101,1111110.我们可以通过在前面添加另一个0并重复此过程来重复此操作.0111110,1011110,1101110等.然而,这种方式的数字增长速度将超过必要的速度,因为使用这种简单的方法,我们省略了数字,如1010111.
那么有没有更好的方法来创建所有可能的排列,一种可以使用的通用方法,无论下一个数字将包含多少位,无论我们需要设置多少个位?
我有一个谜题,我想用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.总是欢迎更好,更快的方法.
问候
方舟
组合
给定两个整数n和k,返回1 ... n中k个数的所有可能组合.
例如,如果n = 4且k = 2,则解决方案是:Run Code Online (Sandbox Code Playgroud)[ [2, 4], [3, 4], [2, 3], [1, 2], [1, 3], [1, 4], ]
我个人认为,
时间复杂度= 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) 我有一个集合,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) 给定列表和排除元素,是否可以忽略包含这些元素的组合的计算?
鉴于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的所有组合.
由@Eric Duminil建议
结果l = [1, 2, 3, 4, 5, 6],size 4和
(1, 2, 3)在第二栏排除(1, 2)在第三栏
All results: …Run Code Online (Sandbox Code Playgroud)combinations ×10
python ×4
algorithm ×3
permutation ×2
arrays ×1
big-o ×1
binary ×1
c# ×1
c++ ×1
counter ×1
filter ×1
hash ×1
java ×1
javascript ×1
keyevent ×1
keylistener ×1
linguistics ×1
linq ×1
pandas ×1
puzzle ×1
python-3.x ×1
recursion ×1
ruby ×1
statistics ×1
swing ×1