python - 如何将排序列表分组为该列表连续元素的起点和终点的元组?
问题描述
假设我的排序列表是这样的:
L = ["01-string","02-string","03-string","05-string","07-string","08-string"]
如您所见,此列表已排序。我现在想要这个列表中每个连续字符串块的起点和终点,例如,这个的输出应该是:
L_continuous = [("01-string", "03-string"),("05-string","05-string"),("07-string","08-string")]
所以,为了澄清,我需要一个元组列表,在每个元组中,我需要列表中每个连续块的开始和结束。因此,例如,我的列表中的元素 0、1 和 2 是连续的,因为 01、02、03 是连续的数字 - 所以起点和终点将是“01-string”和“03-string”。
数字 1-3 是连续的,因此它们形成一个块,而 5 在列表中没有任何连续的数字,因此它自己形成一个块。
解决方案
不是单线,但这样的事情可能会起作用:
L = ["01-string","02-string","03-string","05-string","07-string","08-string"]
counter = None
# lastNum = None
firstString = ""
lastString = ""
L_continuous = list()
for item in L:
currentNum = int(item[0:2])
if counter is None:
# startTuple
firstString = item
counter = currentNum
lastString = item
continue
if counter + 1 == currentNum:
# continuation of block
lastString = item
counter += 1
continue
if currentNum > counter + 1:
# end of block
L_continuous.append((firstString,lastString))
firstString = item
counter = currentNum
lastString = item
continue
else:
print ('error - not sorted or unique numbers')
# add last block
L_continuous.append((firstString,lastString))
print(L_continuous)
推荐阅读
- algorithm - 这个伪代码的时间复杂度是多少?
- google-sheets - ARRAYFORMULA 中的 Google 表格 AVERAGE 函数
- ios - 如何选择 Xcode 的兼容模式在不同设备上重新自动布局?
- django - "message": "预期的字符串或类似字节的对象",
- node.js - GitHub Action 无法构建 firebase 应用程序 w9jds/firebase-action
- mysql - LOAD DATA INFILE 将外键读取为逗号
- java - Spring Boot 集中日志记录 ELK
- node.js - 从终端安装 nodemon 时出错?实际上我在更新 Nodejs 时也遇到了同样的问题
- reactjs - 如何使用 Firebase 并做出反应以创建所有用户都可以访问的静态信息?
- javascript - 按钮将数据保存在 .txt 文件中并擦除其中的旧数据