在Python中使用None对列表进行排序以获取索引

在Python中使用None对列表进行排序以获取索引,python,python-2.7,sorting,nonetype,Python,Python 2.7,Sorting,Nonetype,如何在Python中使用None值对列表进行排序以获取索引 myList=['BAT46ZFILM', 'CMD17-21VGD/TR8', 'BAT46ZFILM', None, 'B72207S2321K311'] 我知道 [i[0] for i in sorted(enumerate(myList), key=lambda x:x[1])] 获取排序方法的索引。但是如何将所有的None值放在末尾。例如,与此解决方案合并: sorted(myList, key=lambda x: (x

如何在Python中使用
None
值对列表进行排序以获取索引

myList=['BAT46ZFILM', 'CMD17-21VGD/TR8', 'BAT46ZFILM', None, 'B72207S2321K311']
我知道

[i[0] for i in sorted(enumerate(myList), key=lambda x:x[1])]
获取排序方法的索引。但是如何将所有的
None
值放在末尾。例如,与此解决方案合并:

sorted(myList, key=lambda x: (x is None, x))
使用
None
值进行排序,但不获取索引。

将两个条件(即
None
和字符串值)组合成元组,并按元组排序:

[i[0] for i in sorted(enumerate(myList), key=lambda x:(x[1] is None, x[1]))]
使用


实际上,您可以使用
None
(仅供参考)进行排序

如果要通过删除
None
对值进行排序:

>>> a = [11, 33, 22, None]
>>> sorted([i for i in a if i is not None])
[11, 22, 33]

“获取索引”是什么意思?您的预期输出是什么?请给出预期输出,问题目前还不清楚。或者将
排序(范围(len(m)),key=lambda k:m[k])
更改为将
None
放在末尾。谢谢,但我不能排除
None
s。我尝试了在排序的
sorted
和排序的
sorted(range(len(m)),key=lambda k:(m[k]是None,m[k])
中的一些更改。关于这段代码所做的更多解释可能会对OP有所帮助。现在让我了解Python。此代码对范围向量进行排序,给出我的向量
m
[1,2,3,…]
),但要对其进行排序,请使用内联(
lambda
)函数定义的
键。在某种程度上,当在排序方法的迭代中发现
None
时,它不进行排序,并在最后保留
None
>>> sorted([11, 33, 22, None])
[None, 11, 22, 33]
>>> a = [11, 33, 22, None]
>>> sorted([i for i in a if i is not None])
[11, 22, 33]