python - 过滤数组并仅检索以最高数字开头的字符串

标签 python arrays linux

我有以下示例数组:

arr = ["0001_xyz_01", "0001_xyz_02", "0001_xyz_03", "0002_xyz_01", "0002_xyz_02", "0002_xyz_03", "0003_xyz_01", "0003_xyz_02", "0003_xyz_03"]

我想从这个数组创建一个新数组,只包含以最高数字开头的字符串。所以新数组看起来像:

new_arr = ["0003_xyz_01", "0003_xyz_02", "0003_xyz_03"]

注意:

  • 构建 new_arr 时,只应查看前 4 个字符 - 必须忽略字符串的其余部分。
  • arr 中的项目顺序可能会改变。
  • arr 中的项目数可能会改变。

我想我可以使用 filter,但我不确定如何:

new_arr = filter(lambda x: <some-filtering-here>, arr)

最佳答案

不是一个很好的解决方案,但你可以试试这个......

>>> new_arr = [x for x in arr if x.startswith(sorted([y[:4] for y in arr])[-1])]
['0003_xyz_01', '0003_xyz_02', '0003_xyz_03']

解释:

  • sorted([y[:4] for y in arr])[-1] 对每个字符串的前 4 个字符的列表进行排序,并选择最大值。

  • [x for x in arr if x.startswith(...)] 是一个列表推导式,它挑选出以此最高值开头的字符串。

关于python - 过滤数组并仅检索以最高数字开头的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25942202/

相关文章:

javascript - 2D 数组在 Angular JS 1.2.x 中工作,但在 1.3.x 中不工作

python - 以正确的顺序从数组构建 block 矩阵

linux - 使用 cut 或 awk 操作目录?

java - 文件名包含 # 导致 Spring Batch StaxEventItemReader 无法打开

android - 执行linux命令并将输出存储在文件android中

python - 将 try except block 与 python 代码合并

python - 如何从 Jinja2 Template 对象获取模板源

arrays - 在给定数组中查找具有最小 LCM 值的对

python - R中的Python-错误: could not find a Python environment for/usr/bin/python

python - 检查IP是否在Python中的CIDR范围内