如何纵向统计R之后连续的P字符序列数量?
纵向统计连续P的实现逻辑梳理
核心思路
先定位唯一的"R",再沿其所在列向下遍历,统计连续出现的"P"数量,直到遇到非"P"字符或表格末尾为止。
分步实现步骤
定位"R"的位置
遍历表格的所有单元格,找到值为"R"的单元格,记录它的行号和列号(因为是纵向统计,后续只需要在同一列向下遍历)。统计下方连续的"P"
- 初始化计数器为0
- 从"R"所在行的下一行开始,逐个检查同列的单元格:
- 若单元格值为"P",计数器加1,继续向下检查
- 若遇到非"P"字符,立即停止遍历
- 若遍历到表格底部全部是"P",则将所有后续的"P"计入总数
输出结果
最终计数器的数值就是需要的统计结果
示例验证
示例1:纵向序列为 R → P → P → L
- R在第1行,从第2行开始检查:第2行是P(计数器=1),第3行是P(计数器=2),第4行是L,停止遍历。输出结果为2
示例2:纵向序列为 R → P → P → P → P → L- 从R下一行开始连续遇到4个P,第6行是L,停止遍历。输出结果为4
不同场景的落地方案参考
Excel环境
- 假设"R"在A列,先用
MATCH("R", A:A, 0)获取R所在的行号(记为ROW_R) - 统计连续P的数量:
- 若后续存在非P字符:
COUNTIF(INDIRECT("A"&(ROW_R+1)&":A"&MATCH("<>P", A:A, 0)-1), "P") - 若到表格末尾全是P:
COUNTA(A:A)-ROW_R
- 若后续存在非P字符:
Python处理二维表格数据
假设表格数据是二维列表table,示例代码如下:
# 定位R的位置 r_row, r_col = None, None for i, row in enumerate(table): for j, val in enumerate(row): if val == 'R': r_row, r_col = i, j break if r_row is not None: break # 统计连续P的数量 count = 0 current_row = r_row + 1 while current_row < len(table): cell_val = table[current_row][r_col] if cell_val == 'P': count += 1 current_row += 1 else: break print(count)
内容的提问来源于stack exchange,提问作者Rodrigo Kawamura
相关产品推荐
相关产品推荐

