首页
学习
活动
专区
工具
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

    51810

    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代替左表一列

    5.3K10

    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函数应用到数据框架整个列。

    7.1K11

    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[

    23030

    理解强化学习

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

    54230

    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.3K10

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

    47930
    领券