首页
学习
活动
专区
工具
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为二维列表的行数。

相关搜索:Python:如何在每一列中为每一列赋值,并在每一行中给出一个给定的合计如何将今天的日期放在Python的dataframe中每一行的第一列?如何将矩阵中每一行的总和作为数组返回?Python:将函数应用于熊猫DataFrame的每一行,并返回**新数据帧**如何将dataframe的每一行和每一列与字符串进行匹配- Python如何使用python将行中间的每一行与单个文本文件中的每一行进行比较?如何使用Python将嵌套列表中的每两个值组合起来?如何让python读取txt文件中的每一行并创建单独的列表?如何将Pandas Dataframe中的每一行分解为多行如何使用Python为数据表中的每一行创建一个返回字典中的值的函数?如何在python中为shell输出中的每一行分配唯一变量如何从数组中为数据表的同一列中的每一行提供不同的图标为column中的每一行计算len,并只取一个遵守Pandas Python条件的人如何将python dataframe中一行中的所有元素移位一列?Python |如何将字符串添加到csv文件中的每一行?如何在SQL/Impala中不删除一行的同时将列中的重复值设置为零?如何遍历pandas dataframe中的每一行,并在超过阈值后将值设置为nan?如何用Python编写excel文件,并在每一列的每一行中添加一个带有相同字符串的intent?如何从dataframe中的每一列中移除空值,并根据键在一行中追加非空列值如何将dataframe中的每一行乘以不同dataframe的不同列,并将所有行的总和作为Python中的新列?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

整理了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行。

    55010

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

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

    19.1K90

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

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

    6.4K10

    在Python中实现Excel的VLOOKUP、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函数应用到数据框架的整个列。

    7.4K11

    MySQL的join关键字详解

    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科学计算之Pandas

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

    2.9K00

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

    . ---- 题意:先输入一个n,表示有n行4列的数,让你每一行选出一个数字,四个数加起来刚好是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[

    23630

    理解强化学习

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

    54730

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

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

    1.4K10

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

    我问过俩老师: 一个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.7K22

    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。

    1.5K10

    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函数求出每一行的结果并进行求和即可。

    48030
    领券