我有以下 list :

list1 = ['# Heading', '200: Stop Engine', '', '20: Start Engine', '400: Do xy']

我想要的是:

list2 = ['20: Start Engine', '200: Stop Engine', '400: Do xy']

因此,应删除或忽略空列表项和以#开头的列表项,其余项应按数字排序.我try 用split()来提取数字和#:

list2 = [i.split() for i in list1]

但是,我在列表中获得一个列表会带来一些其他问题(我需要将列表的内容转换为int进行排序,这只有在我有string的情况下才有效).输出将为:

list2 = ['#', 'Heading', '200:', 'Stop', 'Engine', '', '20:', 'Start', 'Engine', '400:', 'Do', 'xy']

如果I是split(':'),我不能删除#. 对于我try 的分类:

list2.sort(key = lambda x: x[0])

按编号对项目进行排序.这只有在我可以删除#和空项并将string转换为int的情况下才有效.我希望有人能帮助我!提前谢谢!

推荐答案

就照你说的做吧:

忽略所有不以数字开头的项目,然后按冒号分隔符之前的数字排序:

def FilterAndSort(items):
    items = [item for item in items if item and item[0].isdigit()]
    return sorted(items, key=lambda item:int(item.split(':')[0]))


print(FilterAndSort(list1))

按要求输出

Python相关问答推荐

如何将uint 16表示为float 16

如果我已经使用了time,如何要求Python在12秒后执行另一个操作.sleep

Python panda拆分列保持连续多行

从今天起的future 12个月内使用Python迭代

从DataFrame.apply创建DataFrame

拆分pandas列并创建包含这些拆分值计数的新列

jit JAX函数中的迭代器

Python在tuple上操作不会通过整个单词匹配

查找两极rame中组之间的所有差异

图像 pyramid .难以创建所需的合成图像

C#使用程序从Python中执行Exec文件

对所有子图应用相同的轴格式

使用密钥字典重新配置嵌套字典密钥名

给定高度约束的旋转角解析求解

计算天数

启动带有参数的Python NTFS会导致文件路径混乱

使用Python查找、替换和调整PDF中的图像'

将标签移动到matplotlib饼图中楔形块的开始处

Gekko中基于时间的间隔约束

无法在Spyder上的Pandas中将本地CSV转换为数据帧