python list排序的两种方法及实例讲解
来源:互联网 发布:java工程师是什么意思 编辑:程序博客网 时间:2024/05/07 21:33
对List进行排序,Python提供了两个方法方法1.用List的内建函数list.sort进行排序
list.sort(func=None, key=None, reverse=False)
Python实例:
1
2
3
4
5
6
>>>
list
=
[
2
,
5
,
8
,
9
,
3
]
>>>
list
[
2
,
5
,
8
,
9
,
3
]
>>>
list
.sort()
>>>
list
[
2
,
3
,
5
,
8
,
9
]
方法2.用序列类型函数sorted(list)进行排序(从2.4开始)
Python实例:
1
2
3
4
5
>>>
list
=
[
2
,
5
,
8
,
9
,
3
]
>>>
list
[
2
,
5
,
8
,
9
,
3
]
>>>
sorted
(
list
)
[
2
,
3
,
5
,
8
,
9
]
两种方法的区别:
sorted(list)返回一个对象,可以用作表达式。原来的list不变,生成一个新的排好序的list对象。
list.sort() 不会返回对象,改变原有的list。
其他sort的实例:
实例1:正向排序1
2
3
4
>>>L
=
[
2
,
3
,
1
,
4
]
>>>L.sort()
>>>L
>>>[
1
,
2
,
3
,
4
]
1
2
3
4
>>>L
=
[
2
,
3
,
1
,
4
]
>>>L.sort(reverse
=
True
)
>>>L
>>>[
4
,
3
,
2
,
1
]
1
2
3
4
>>>L
=
[(
'b'
,
6
),(
'a'
,
1
),(
'c'
,
3
),(
'd'
,
4
)]
>>>L.sort(
lambda
x,y:
cmp
(x[
1
],y[
1
]))
>>>L
>>>[(
'a'
,
1
), (
'c'
,
3
), (
'd'
,
4
), (
'b'
,
6
)]
1
2
3
4
>>>L
=
[(
'b'
,
6
),(
'a'
,
1
),(
'c'
,
3
),(
'd'
,
4
)]
>>>L.sort(key
=
lambda
x:x[
1
])
>>>L
>>>[(
'a'
,
1
), (
'c'
,
3
), (
'd'
,
4
), (
'b'
,
6
)]
1
2
3
4
5
>>>L
=
[(
'b'
,
2
),(
'a'
,
1
),(
'c'
,
3
),(
'd'
,
4
)]
>>>
import
operator
>>>L.sort(key
=
operator.itemgetter(
1
))
>>>L
>>>[(
'a'
,
1
), (
'b'
,
2
), (
'c'
,
3
), (
'd'
,
4
)]
1
2
3
4
5
6
>>>L
=
[(
'b'
,
2
),(
'a'
,
1
),(
'c'
,
3
),(
'd'
,
4
)]
>>>A
=
[(x[
1
],i,x)
for
i,x
in
enumerate
(L)]
#i can confirm the stable sort
>>>A.sort()
>>>L
=
[s[
2
]
for
s
in
A]
>>>L
>>>[(
'a'
,
1
), (
'b'
,
2
), (
'c'
,
3
), (
'd'
,
4
)]
转载自:http://blog.chinaunix.net/uid-20775448-id-4222915.html
以上给出了6中对List排序的方法,其中实例3.4.5.6能起到对以List item中的某一项
为比较关键字进行排序.
效率比较:
cmp < DSU < key
通过实验比较,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相当
多关键字比较排序:
实例7:1
2
3
4
>>>L
=
[(
'd'
,
2
),(
'a'
,
4
),(
'b'
,
3
),(
'c'
,
2
)]
>>> L.sort(key
=
lambda
x:x[
1
])
>>> L
>>>[(
'd'
,
2
), (
'c'
,
2
), (
'b'
,
3
), (
'a'
,
4
)]
我们看到,此时排序过的L是仅仅按照第二个关键字来排的,
如果我们想用第二个关键字排过序后再用第一个关键字进行排序呢?有两种方法
实例8:1
2
3
4
>>> L
=
[(
'd'
,
2
),(
'a'
,
4
),(
'b'
,
3
),(
'c'
,
2
)]
>>> L.sort(key
=
lambda
x:(x[
1
],x[
0
]))
>>> L
>>>[(
'c'
,
2
), (
'd'
,
2
), (
'b'
,
3
), (
'a'
,
4
)]
1
2
3
4
>>> L
=
[(
'd'
,
2
),(
'a'
,
4
),(
'b'
,
3
),(
'c'
,
2
)]
>>> L.sort(key
=
operator.itemgetter(
1
,
0
))
>>> L
>>>[(
'c'
,
2
), (
'd'
,
2
), (
'b'
,
3
), (
'a'
,
4
)]
为什么实例8能够工作呢?原因在于tuple是的比较从左到右比较的,比较完第一个,如果相等,比较第二个
0 0
- python list排序的两种方法及实例讲解
- python list排序的两种方法及实例讲解
- Python list排序的两种方法及实例讲解
- python list排序的两种方法及实例讲解
- python list列表排序的两种方法及实例讲解
- Python list(列表)排序的两种方法
- List排序的两种实现方法
- List排序的两种方法
- Javascript setInterval的两种调用方法(实例讲解)
- Collections.sort方法对list排序的两种方式
- Collections.sort方法对list排序的两种方式
- Collections.sort( )方法对list排序的两种方式
- Collections.sort方法对list的两种排序方式
- Collections.sort对List排序的两种方法
- Collections.sort对List排序的两种方法
- Collections.sort方法对list排序的两种方式
- Python实现归并排序的两种方法
- List排序的两种简便方式
- cloudera-manager安装+CDH5.4.1部署+mysql+python+impala安装
- 适配低版本和高版本系统的API(转载)
- error: couldn't parse contents of '/Users/.../Info.plist': The data couldn’t be read because...
- linux shell 编程 10 脚本中调用脚本
- Linux运维(FTP服务的安装和配置)
- python list排序的两种方法及实例讲解
- QString QRegExp 正则匹配
- MySQL连接及基本信息查看命令小结
- C++学习札记一
- hdu 2955 Robbies
- Uva 1585
- centos git 中文件名显示乱码
- css篇——display
- centos 6.5_32 下安装zabbix 2.2 开启中文语言 zabbix没中文语言选项解决方法