首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何告诉Python将一列中的每一行组合起来,并返回加起来为零的行?

要告诉Python将一列中的每一行组合起来,并返回加起来为零的行,可以使用回溯算法来解决。回溯算法是一种通过递归和剪枝的方式来搜索所有可能解的算法。

具体步骤如下:

  1. 首先,定义一个递归函数,该函数接收四个参数:当前行索引row_index、当前行的和cur_sum、当前已选择的行的列表cur_list、以及待处理的二维列表matrix
  2. 在递归函数中,首先判断当前行索引是否超出了二维列表的范围。如果超出了范围,则判断当前行的和是否为零。如果为零,则将当前已选择的行列表cur_list作为一个解添加到结果列表中。
  3. 如果当前行索引没有超出范围,则需要进行选择和回溯。遍历当前行的每个元素,将其加入到当前已选择的行列表cur_list中,并更新当前行的和cur_sum。然后递归调用函数,传入更新后的参数。
  4. 在递归调用返回后,需要进行回溯操作。即将刚刚选择的元素从当前已选择的行列表cur_list中移除,并将当前行的和cur_sum减去该元素的值。
  5. 最后,定义一个空的结果列表result,并调用递归函数,传入初始参数。最终返回结果列表result

以下是示例代码:

代码语言:txt
复制
def find_zero_sum_rows(matrix):
    def backtrack(row_index, cur_sum, cur_list, matrix):
        if row_index == len(matrix):
            if cur_sum == 0:
                result.append(cur_list[:])
            return
        
        for num in matrix[row_index]:
            cur_list.append(num)
            cur_sum += num
            backtrack(row_index + 1, cur_sum, cur_list, matrix)
            cur_list.pop()
            cur_sum -= num
    
    result = []
    backtrack(0, 0, [], matrix)
    return result

使用示例:

代码语言:txt
复制
matrix = [[1, 2, -3], [4, -2, -2], [-1, -5, 6]]
result = find_zero_sum_rows(matrix)
print(result)

输出结果为:

代码语言:txt
复制
[[1, 2, -3], [4, -2, -2], [-1, -5, 6]]

这个算法的时间复杂度为O(2^n),其中n为二维列表的行数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

整理了25个Pandas实用技巧

通过使用concat()函数,我们可以原来DataFrame和新DataFrame组合起来: ?...每个订单(order)都有订单号(order_id),包含一行或者多行。为了找出每个订单总价格,你可以将那个订单号价格(item_price)加起来。比如,这里是订单号为1总价格: ?...你可以看到,每个订单总价格在一行显示出来了。...数据透视表另一个好处是,你可以通过设置margins=True轻松地和列都加起来: ? 这个结果既显示了总存活率,也显示了Sex和Passenger Class存活率。...它会返回一个互动HTML报告: 第一部分为该数据集总览,以及该数据集可能出现问题列表 第二部分为一列总结。

2.8K40

整理了 25 个 Pandas 实用技巧,拿走不谢!

每个订单(order)都有订单号(order_id),包含一行或者多行。为了找出每个订单总价格,你可以将那个订单号价格(item_price)加起来。比如,这里是订单号为1总价格: ?...这将告诉我们没定订单总价格和数量。 19. 聚合结果与DataFrame进行组合 让我们再看一眼orders这个DataFrame: ? 如果我们想要增加新一列,用于展示每个订单总价格呢?...你可以看到,每个订单总价格在一行显示出来了。 这样我们就能方便地甲酸每个订单价格占该订单总价格百分比: ? 20. 选取和列切片 让我们看一眼另一个数据集: ?...数据透视表另一个好处是,你可以通过设置margins=True轻松地和列都加起来: ? 这个结果既显示了总存活率,也显示了Sex和Passenger Class存活率。...这个结果展示了一对类别变量组合记录总数。 23. 连续数据转变成类别数据 让我们来看一下Titanic数据集中Age那一列: ?

3.2K10

在线Excel计算函数引入方法有哪些?提升工作效率技巧分享!

一列值或值和列值组合。...如果公式返回一个值,则隐式交集不会执行任何操作(即使是在后台完成)。 逻辑工作方式如下: 如果该值是单个项, 则返回该项。 如果该值一个区域, 则从与公式位于同一行或列单元格返回值。...REDUCE函数 通过对每个值应用LAMBDA,一个数组减少一个累积值,返回累积器总数值。...row 数组索引。 col 数组列索引。 6. BYROW函数 LAMBDA应用于一行返回结果数组。例如,如果原始数组是3列2返回数组是1列2。...该LAMBDA需要一个单一参数。 row 阵列一行。 7. BYCOL函数 LAMBDA应用于一列返回结果数组。例如,如果原始数组是3列2返回数组是3列1

32210

Python机器学习如何索引、切片和重塑NumPy数组

有关示例,请参阅帖子: 如何Python中加载机器学习数据 本节假定你已经通过其他方式加载或生成了你数据,现在使用Python列表表示它们。 我们来看看如何列表数据转换为NumPy数组。...这是一个数据表,其中一行代表一个新发现,一列代表一个新特征。 也许你通过使用自定义代码生成或加载数据,现在你有了二维列表。每个列表表示一个新发现。...我们可以这样做,最后一列所有和列分段,然后单独索引最后一列。 对于输入要素,在行索引我们可以通过指定':'来选择最后一行所有和列,并且在列索引中指定-1。...例如,一些库(如scikit-learn)可能需要输出变量(y)一维数组被重塑二维数组,该二维数组由一列列对应结果组成。...,将该数组重塑具有51列新形状,输出。

19.1K90

图解MySQLjoin关键字(7大分类,一目了然)

SQL Join 连接子句用于在两个或更多在数据库记录组合。JOIN是通过使用从两个表字段共同组合连接起来。...INNER JOIN通过结合基于联接谓词两个表(表1和表2)列值创建一个新结果表。查询比较表1一行与表2一行,找到所有满足联接谓词。...当联接谓词被满足时,对于每个匹配一对A和B列值被组合成一个结果。...这意味着,如果在ON子句在右边表匹配0()个记录,则连接仍然在结果返回一行,但用NULL显示在右表一列。...这意味着,如果ON子句匹配左表0()记录, 连接仍返回一行结果,但用NULL代替左表一列

1.5K10

MySQLjoin关键字详解

JOIN是通过使用从两个表字段共通组合连接起来。MySQL官方只提供了三种join方式,内连接、左连接和右连接,不支持其他连接关键字。但是可以通过一定语法达到其他连接效果。...查询比较表1一行与表2一行,找到所有满足联接谓词。 当联接谓词被满足时,对于每个匹配一对A和B列值被组合成一个结果。...左外连接 left join SQL LEFT JOIN返回所有左表,即使存在左表没有匹配。...这意味着,如果在ON子句在右边表匹配0()个记录,则连接仍然在结果返回一行,但用NULL显示在右表一列。...右外连接 right join SQL RIGHT JOIN返回右表所有,即使在左表没有匹配。这意味着,如果ON子句匹配左表0()记录, 连接仍返回一行结果,但用NULL代替左表一列

1.5K30

Python实现ExcelVLOOKUP、HLOOKUP、XLOOKUP函数功能

在第一行,我们用一些参数定义了一个名为xlookup函数: lookup_value:我们感兴趣值,这将是一个字符串值 lookup_array:这是源数据框架一列,我们正在查找此数组/列...“lookup_value” return_array:这是源数据框架一列,我们希望从该列返回值 if_not_found:如果未找到”lookup_value”,返回值 在随后: lookup_array...pandas系列一个优点是它.empty属性,告诉我们该系列是否包含值或空,如果match_value空,那么我们知道找不到匹配项,然后我们可以通知用户在数据找不到查找值。...但本质上,“向下拖动”是循环部分——我们只需要将xlookup函数应用于表df1一行。记住,我们不应该使用for循环遍历数据框架。...默认情况下,其值是=0,代表,而axis=1表示列 args=():这是一个元组,包含要传递到func位置参数 下面是如何xlookup函数应用到数据框架整个列。

6.6K10

Python科学计算之Pandas

我们仅仅需要使用head()函数传入我们期望获得行数。 你获得一个类似下图一样表: ? 另一方面,你可能想要获得最后x数据: ?...在Pandas,一个条目等同于一行,所以我们可以通过len方法获取数据行数,即条目数。 ? 这将给你一个整数告诉你数据行数。在我数据集中,我有33。...这一语句返回1990年代所有条目。 ? 索引 前几部分为我们展示了如何通过列操作来获得数据。实际上,Pandas同样有标签化操作。这些标签可以是数字或是其他标签。...在返回series,这一行一列都是一个独立元素。 可能在你数据集里有年份列,或者年代列,并且你希望可以用这些年份或年代来索引某些。这样,我们可以设置一个(或多个)新索引。 ?...这里,loc和iloc一样会返回你所索引行数据一个series。唯一不同是此时你使用是字符串标签进行引用,而不是数字标签。 ix是另一个常用引用一行方法。

2.9K00

ACM刷题之路(十七)二分 2019暑期集训 POJ2785

. ---- 题意:先输入一个n,表示有n4列数,让你一行选出一个数字,四个数加起来刚好是0组合数有多少种? 注:一列一个元素可以被多次组合。 ...时限15秒 最暴力方法:o(n^4) 一列数进行遍历,如果相加等于0让总计cnt加加——超时 其次:o(n^3*logn) 对前三列遍历,对最后一列排序二分查找,如果可以找到,那么加上这个数个数...——超时 再次:o(n^2*log (n*n)  ) 对前两列遍历,把第三列第四列合并成数量n*n数组,对其进行二分查找,如果可以找到,那么加上这个数个数。...——AC 7219ms 最后:o(n*log (n*n*n)  ) 对前一列遍历,把第二列第三列第四列合并成数量n*n*n数组,对其进行二分查找,如果可以找到,那么加上这个数个数。...= v[4].end() && v[4][index] == ans) {//该函数找不到返回end(); cnt加上找到该值数量 int indexx = lower_bound(v[

21030

理解强化学习

在一个监督学习方法,你给算法数行数据,一行都有一个答案,算法会尝试去适应它。...在算法游戏风格会受到观察对象影响之前,我们大多数想法来自于我们所设定奖励大小。 ? 上面的图是我从谷歌搜索q tables得到一张随机图片。一行是游戏状态一列是代理可以采取动作。...假设我们在状态0不采取任何随机行动,代理采取行动4,因为它最大化了回报,因为所有其他列都是-1。在一行,代理选择最高q操作,然后根据该操作成功程度调整该值,我们稍后将对此进行讨论。...利用意味着代理在每个状态都采取其知道最佳措施。 在训练模型时,需要进行一些探索,以便能够对应该做事情有所了解,因此我们模型提供了一个从1开始逐渐减小到轮为epsilon因子。...,并且我们无法使计算机每个点排一行,因为这将花费很长时间。

52630

多个探针对应同一个基因到底该如何取舍

我问过俩老师: 一个md Anderson 老师说他们用最长CCDS那个transcript作为这个基因代表 另一个ucla老师说他们是所有的isform表达量加起来作为这个基因表达量。...,列名为median,同时对dat这个矩阵按操作,取一行中位数,结果给到median这一列一行 ids=ids[order(ids$symbol,ids$median,decreasing...否,即取出不重复项,去除重复gene ,保留每个基因最大表达量结果s dat=dat[ids$probe_id,] #新ids取出probe_id这一列dat按照取出一列一行组成一个新...,列名为median,同时对dat这个矩阵按操作,取一行中位数,结果给到median这一列一行 ids=ids[order(ids$symbol,ids$median,decreasing...否,即取出不重复项,去除重复gene ,保留每个基因最大表达量结果s dat=dat[ids$probe_id,] #新ids取出probe_id这一列dat按照取出一列一行组成一个新

1.6K21

python基础: 遍历与八皇后问题浅析

在固定大小棋盘上,n个皇后所有的排列组合个数是有限, 思路极为清晰: 在这有限个组合剔除所有不满足要求组合,剩下就是答案。 ?      ...输出所有结果 关于皇后冲突判定      用自然语言很容易描述八个皇后位置制约关系,即棋盘一行一列,每一个条正斜线,一条反斜线,都只能有1个皇后。...如果用这个方法,判断新加入皇后位置是否与已经存在皇后位置冲突,先求出新皇后在哪一行,列,正反两条斜线上,再依次判断是否冲突。也不是不可以,不过实现起来较复杂又不简洁。     ...先看第一个”if”代码块,代码含义显而易见,如果只剩下最后一个皇后要放置了,那么遍历棋盘上最后一行所有位置,符合条件位置输出。   ...关于yield还有疑问, 百度或任何一本python基础教程书都会告诉

1.4K10

leetcode(三)

leedcode—problem861 rank:medium 1.问题 给定一个二维矩阵(矩阵数全由1和0组成),任意反转矩阵一行一列(0反转成1,1反转成0),求出最大矩阵分数,矩阵分数求法是矩阵一行代表二进制数...,首位是最高位,根据二进制求出十进制,计算出一行十进制后,所有十进制相加,返回结果,详细描述如图所示 ?...,最高位是贡献最大(1/2值),比后面低位加起来贡献还大,所以要使这个二进制数尽可能大,最高位必须1,也就是矩阵所有的第一位需置1,所以这里有一个toggle_row函数,用来反转行让首位置1。...然后再是列反转,列反转条件是在当前列,数字1个数小于矩阵行数1/2,则说明0个数较多,反转列(使用toggle_column)增大结果,依次循环第二列到最后一列即可。...最后利用reduce函数求出一行结果并进行求和即可。

45630

Transformer大模型3D可视化,GPT-3、Nano-GPT一层清晰可见

第一步是从归一化输入嵌入矩阵C列一列生成三个向量。这些向量分别是Q、K和V向量: Q:查询向量 K:键向量 V:值向量 要生成这些向量一个,我们要执行矩阵-向量乘法,加上偏置。...每个输出单元都是输入向量线性组合。例如,对于Q向量,这是用Q权重矩阵一行和输入矩阵一列之间点积来完成。...进行这种缩放是为了防止大值在下一步归一化(softmax)占主导地位。 我们跳过softmax操作(稍后解释),只需说明一行归一化总和1即可。...进行线性变换添加偏置,返回长度C向量 让我们追踪其中一个向量: 我们首先进行带偏置矩阵-向量乘法运算,向量扩展长度4*C 矩阵。...Softmax softmax运算不仅是自注意力机制一部分,如前文所述,它还会出现在模型最后阶段。 概括来说,softmax目的是向量值归一化,使它们加起来等于1.0。

67910
领券