Python 3.x 我想知道这些代码之间的区别 输出:['ab','aaa','abc','abcd','abcde']

Python 3.x 我想知道这些代码之间的区别 输出:['ab','aaa','abc','abcd','abcde'],python-3.x,Python 3.x,上述输出是正确的 代码2: def myfunc(e): return len(e) x=[`ab', 'aaa', 'abc','abcd',abcde'] x. sort(key=myfunc) print(x) 输出:['ab','aba','aaa','abcd','abcde'] 在这里,“aaa”应该是python抛出此输出的首要原因 请任何人解释一下 提前谢谢 这是一种稳定的分类。你的钥匙对他们来说都是一样的。因此,在本例中,输出与输入相同。欢迎使用so!您可以使用x.so

上述输出是正确的

代码2:

def myfunc(e):
  return len(e)
x=[`ab', 'aaa', 'abc','abcd',abcde']
x. sort(key=myfunc)
print(x)
输出:['ab','aba','aaa','abcd','abcde']
在这里,“aaa”应该是python抛出此输出的首要原因

请任何人解释一下


提前谢谢

这是一种稳定的分类。你的钥匙对他们来说都是一样的。因此,在本例中,输出与输入相同。

欢迎使用so!您可以使用
x.sort(key=len)
立即简化代码,这比使用名称不清的
myfunc()
包装
len()
要明确得多。无论如何,由于列表的顺序已更改,因此需要第二个输出。您是根据
len
长度排序的,因此在相同长度的组中不会进行字母排序。您是否尝试按字母顺序对每个长度组进行排序?请检查这两种情况下的排序是否不同。是的,我尝试按字母顺序进行排序。排序函数不会更改比较相等的元素的相对顺序。因此,您得到的结果是正确的(假设第二个结果中的“abc”不是“aba”)。为什么你认为“aaa”应该排在第一位?
def myfunc(e):
  return len(e)
x=[`ab', 'abc', 'aaa','abcd',abcde']
x. sort(key=myfunc)
print(x)