为什么Python会出现这种情况';s list.sort?

为什么Python会出现这种情况';s list.sort?,python,Python,鉴于代码: a=['a','b','c','d'] b=a[::-1] print b c=zip(a,b) print c c.sort(key=lambda x:x[1])# print c 它打印: ['d', 'c', 'b', 'a'] [('a', 'd'), ('b', 'c'), ('c', 'b'), ('d', 'a')] [('d', 'a'), ('c', 'b'), ('b', 'c'), ('a', 'd')] [('a', 'd'), ('b', 'c'), (

鉴于代码:

a=['a','b','c','d']
b=a[::-1]
print b
c=zip(a,b)
print c
c.sort(key=lambda x:x[1])#
print c
它打印:

['d', 'c', 'b', 'a']
[('a', 'd'), ('b', 'c'), ('c', 'b'), ('d', 'a')]
[('d', 'a'), ('c', 'b'), ('b', 'c'), ('a', 'd')]
[('a', 'd'), ('b', 'c'), ('c', 'b'), ('d', 'a')]
为什么[('a','d'),('b','c'),('c','b'),('d','a')]会变成[('d','a'),('c','b'),('b','c'),('a','d')


同样,鉴于:

c.sort(key=lambda x:3)#
print c
它打印:

['d', 'c', 'b', 'a']
[('a', 'd'), ('b', 'c'), ('c', 'b'), ('d', 'a')]
[('d', 'a'), ('c', 'b'), ('b', 'c'), ('a', 'd')]
[('a', 'd'), ('b', 'c'), ('c', 'b'), ('d', 'a')]
没有任何变化-为什么?

因为x[1]表示秒

使用


您已经使用第二项作为键对
c
进行了排序,第二项确实上升了,正如您所要求的那样。有什么奇怪的

您已经使用每个元组的第二个元素作为键对列表进行了排序,这样就可以按第二个元素对元组进行排序(注意“a”、“b”、“c”、“d”的顺序递增)。有什么问题吗?

正如其他人所说,
[1]
指的是第二个元素,因此第一部分中的元素按这种方式排序

from operator import itemgetter    
c.sort(key=itemgetter(0))

至于第二部分,
list.sort()
是,因此计算到相同键的元素将保持它们在序列中的相对位置。这就是为什么使用
.sort(reverse=True)
可以得到与
.sort()
后接
.reverse()

不同的结果。很难判断您使用过的Python在哪些方面有问题。名单?兰博达斯?例如,你明白“λx:3”是什么意思吗?还是x[1]?