我试图在Python中按第一行对列表进行排序(特别是不使用Numpy,我知道有很多解决方案使用Numpy,但这是一个专门要求不使用Numpy的方法的问题)
这是我的列表:
listOfLists = [ ['m', 'e', 'l', 't', 's'],
['g', 'p', 's', 'k', 't'],
['y', 'q', 'd', 'h', 's'] ]
我希望对这个列表进行排序1)按字母顺序,但2)仅按第一个列表项排序,垂直切片应遵循第一个列表项的顺序。例如:
^{pr2}$ListOfList中的第一项是“熔体”,然后按字母顺序将其排序为“elmst”。列表列表中的其余项不是按字母顺序排序的,而是“遵循”列表中第一项的开关和排序模式。在
我可能有点可笑,但我已经花了几个小时在这个问题上(这是一个更大的计划的一部分)。我试着从列表列表中分割出第一个条目,并按字母顺序对其进行排序,然后将其与列表中未排序的第一个列表的片段进行比较,并比较位置。但我好像什么也做不到。在
numpy
是同时提高性能和可读性的方法:非
^{pr2}$numpy
解决方案:您可以使用
zip
来转置列表,对转置进行排序,然后将该列表转置回正确的维度之一。在编辑:
正如@StevenRumbalski在评论中指出的那样,上面的方法将对垂直切片进行完全排序(按第一个字母,然后第二个字母等),而不是按第一个字母(先按第一个字母排序,然后按输入中的相对顺序排序)进行排序。我将在这里重现他的解决方案以便于查看:
^{pr2}$相关问题 更多 >
编程相关推荐