python-3.x - 如何在对不同子列表长度的列表进行排序时修复 IndexError
问题描述
我有以下列表:
expected_ans = [[3], [1],[2],[1,2,3],[1,3],[2,3], [1,2] ,[]]
我试图以这种方式按子列表中的第一个元素对其元素进行排序:
sorted(expected_ans, key=lambda x:x[-1])
我收到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
IndexError: list index out of range
我不确定我错过了什么?提前感谢您的建议。
解决方案
没有索引适用于空列表,您的示例列表中的最后一个子列表就是该列表。
您可以改为按每个子列表的单个项目切片进行排序,如果子列表为空,则将返回一个空列表作为键并将其放在返回列表的前面:
sorted(expected_ans, key=lambda x: x[-1:])
这将返回:
[[], [1], [2], [1, 2], [3], [1, 2, 3], [1, 3], [2, 3]]
推荐阅读
- python - 如何在机器学习项目中使用 matplotlib 在图表上为每个特征绘制两个水平条
- heroku - Can I disable Heroku's slugignore?
- python - Scope of return type hints in Python
- javascript - Converting date and time to JavaScript date format
- python - import another python class file to the main file in jupyter notebook on mac
- java - 在表格下方显示每种产品的总金额
- asp.net-core - Blazor Javascript isolation with NPM dependencies
- java - JpaSpecification using Generics. Works with string, but issues with Date and joined fields
- c++ - How to link libraries properly using CMakeLists.txt for MinGW?
- reactjs - How can i run reactjs locally on mac other than the npx create-react-app?