Python入门100个实例(26)——列表排序

从本实例学到什么

  1. 用sort方法对列表进行排序
  2. 用sorted函数对列表进行排序

实例程序代码

#例3-3-1  对列表进行排序
# sort()方法的用法
motorcycles = ['honda', 'yamaha', 'suzuki', '宗申', '钱江']
print("排序前:", motorcycles)
motorcycles.sort()  #调用形式是:对象.方法名()
print("排序后:", motorcycles)

print("逆向排序前:", motorcycles)
#下一行调用sort()方法,传递了一个参数。
#sort()方法一共有2个参数,写法是sort(key, reverse)
#  第一个参数key是一个函数,用于生成比较用的键。如果为空(None),则直接拿列表元素的值进行比较。
#  第二个参数reverse设为True时,意味着进行逆向排序;为False时,是正向排序。
motorcycles.sort(reverse=True)
# 上一行中,参数的写法值得注意。reverse=True,是指本次调用传给reverse参数的值为True。
#上述写法叫关键字参数。
print("逆向排序后:", motorcycles)

# sorted()函数的用法
motorcycles = ['宗申', 'honda', 'yamaha', 'suzuki', '钱江']
print("调用sorted()函数之前,列表内容:", motorcycles)
result = sorted(motorcycles)
print("调用sorted()函数之后,列表内容:", motorcycles)
print("调用sorted()函数之后,排序结果:", result)

#利用sorted()函数进行逆向排序
nx = sorted(motorcycles, reverse=True)
print("调用sorted()函数,进行逆向排序:", nx)

运行例3-3-1,输出以下内容:

排序前: [‘honda’, ‘yamaha’, ‘suzuki’, ‘宗申’, ‘钱江’]
排序后: [‘honda’, ‘suzuki’, ‘yamaha’, ‘宗申’, ‘钱江’]
逆向排序前: [‘honda’, ‘suzuki’, ‘yamaha’, ‘宗申’, ‘钱江’]
逆向排序后: [‘钱江’, ‘宗申’, ‘yamaha’, ‘suzuki’, ‘honda’]
调用sorted()函数之前,列表内容: [‘宗申’, ‘honda’, ‘yamaha’, ‘suzuki’, ‘钱江’]
调用sorted()函数之后,列表内容: [‘宗申’, ‘honda’, ‘yamaha’, ‘suzuki’, ‘钱江’]
调用sorted()函数之后,排序结果: [‘honda’, ‘suzuki’, ‘yamaha’, ‘宗申’, ‘钱江’]
调用sorted()函数,进行逆向排序: [‘钱江’, ‘宗申’, ‘yamaha’, ‘suzuki’, ‘honda’]

用sort方法对列表进行排序

例3-3-1,第5行调用motorcycles.sort(),对motorcycles列表进行排序。需要指出的是:

  1. 这一调用按元素值从小到大排序。值的类型是字符串的话,元素之间按字典序从小到大排序。
  2. 字典序是什么?翻开新华字典,你会看到’华’排在’新’之前,这意味着:‘华’ < ‘新’。翻开英文字典,你会看到’china’排在’america’之后,这意味着:‘china’ > ‘america’ 。
  3. sort方法会修改列表。例3-3-1第4行和第6行都输出motorcycles列表的值,你可以看到两次输出的值是不同的,见输出内容的第一行和第二行。这是因为第5行调用motorcycles.sort(),修改了motorcycles列表。
  4. sort方法返回None。注意,返回的不是排序后的列表。

例3-3-1第13行是对motorcycles列表进行按字典序从大到小的排序,即逆向排序。
第13行调用sort方法,参数的写法比较特别。传入参数的写法是:reverse=True。Python把这一写法叫做关键字参数,它的格式是:参数名 = 参数值。这表明,reverse是参数名,True是参数值。
诚如第10到12行注释所述,sort方法有两个参数,一个是key参数,另一个是reverse参数。

  • 第5行的调用,即motorcycles.sort(),两个参数都将采用默认值(key参数的默认值是None, reverse参数的默认值是False)。这次调用从小到大排序。
  • 第13行的调用,即motorcycles.sort(reverse=True),key参数采用默认值,reverse参数采用传入的True值。这次调用按从大到小排序。

用sorted函数对列表进行排序

注意,函数的名字是sorted,尾部有’ed’。sort方法的名字尾部没有’ed’。
调用sorted函数,需要传入被排序的列表。第21行调用sorted函数,传入了motorcycles列表,就是对该列表进行排序。是从小到大排序还是从大到小排序?是从小到大。而第26行调用sorted函数,按从大到小排序。需要指出的是:

  1. 调用sorted函数不修改被排序的列表。所以,第22行代码输出motorcycles的值,与第20行代码输出的值没有任何变化。
  2. 调用sorted函数,会生成并返回一份新列表,这份新列表内的元素是排序的。第21行,sorted函数返回的新列表赋值给result变量。第23行代码输出result列表,其内各个元素是按从小到大排序的。
  3. sorted函数也有key参数和reverse参数。这两个参数的用法与sort方法的同名参数一致。

小结

  1. 调用sort方法的写法:列表对象.sort()。作用是对列表内的元素进行从小到大排序。这一排序是“就地排序”,也就是说将修改列表的值——改变元素的顺序。
  2. 列表对象.sort(reverse=True),是对列表内的元素进行从大到小排序。
  3. 调用sorted函数的写法:变量v = sorted(列表)。作用是对列表内的元素进行从小到大排序,排序结果存为一份新列表,而传入的列表不会发生改变。sorted函数返回新列表,赋值给变量v。
  4. result = sorted(列表, reverse=True),是对列表内的元素进行从大到小排序,排序结果存为一份新列表,而传入的列表不会发生改变。sorted函数返回新列表,赋值给变量result。
  5. sort方法只涉及一份拷贝,这份拷贝会发生变化。sorted函数会涉及两份拷贝,一份是传入的列表,一份是结果列表。传入的列表不会发生变化。结果列表存储了排序结果。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值