我有以下示例数组:
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/