python - 如何在python中拆分和排序列表的内容

标签 python list split

我有以下 list :

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

我想得到:

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

所以空列表项和以#开头的项应该被删除或忽略,其余的应该按数字排序。我尝试使用 split() 来提取数字和 #:

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

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

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

如果我split(':'),我不能删除#。 对于我尝试的排序:

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

按数字对项目进行排序。这仅在我可以删除 # 和空项并将 string 转换为 int 时才有效。我希望有一个人可以帮助我!提前致谢!

最佳答案

首先,您可以使用列表推导从列表中过滤掉不需要的项目,然后对其进行排序:

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

out = sorted(
    [s for s in list1 if s.split(":")[0].isdigit()],
    key=lambda s: int(s.split(":")[0]),
)
print(out)

打印:

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

关于python - 如何在python中拆分和排序列表的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73514027/

相关文章:

python - 如何知道当前哪个进程正在系统上下载某些内容?

python - “gcc”在 AWS Elastic Beanstalk 上构建 pandas 时失败

c++ - C++ 中读取大型 CSV 文件的性能问题

javascript - 撤消拆分的优雅解决方案 ('' ).join (' ' );

python - 为什么 list.append 在 bool 上下文中评估为 false?

bash - 为什么 shell 在使用子字符串时要删除空格?

python - 如何找到以开头的python列表项

python - Subprocess.call 或 Subprocess.Popen 不能使用 PATH (Linux/Windows) 中的可执行文件

python - 再次使用该值作为索引以避免局部变量时列表交换两个元素失败

c# - 使用 JSON.NET 将自定义名称添加到数组