一组有序项目的集合 可变的数据类型【可进行增删改查】 列表中可以包含任何数据类型,也可包含另一个列表【可任意组合嵌套】 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔 列表可通过序号访问其中成员
定义
1
2
3
4
5
6
7
8
9
10
11
12
|
>>> l = [] #空列表 >>> l = [ 1 , 2 , 3 ] >>> l = [ 1 , 2 , 3 ,[ 'a' , 'b' ]] >>> l = list ( 'linuxeye' ) >>> l [ 'l' , 'i' , 'n' , 'u' , 'x' , 'e' , 'y' , 'e' ] >>> l = list ( range ( 5 )) >>> l [ 0 , 1 , 2 , 3 , 4 ] >>> l = '1;2;3;4;5' .split( ';' ) >>> l [ '1' , '2' , '3' , '4' , '5' ] |
内建函数list(a_sequence) 可以将一个序列转为列表
索引
正索引是编号是从左到右,0开始;负索引编号是从右往左,-1、-2 …;取范围值都是从左至右
1
2
3
4
5
6
7
8
9
10
11
|
>>> LanguageList = [ '<span class="wp_keywordlink">Python</span>' , 'Shell' , 'Perl' , 'PHP' , 'java' , 'C' , "C++" , "Lisp" ] >>> LanguageList[ 0 ] #取第一个值 'Python' >>> LanguageList[ 3 ] #第四个值 'PHP' >>> LanguageList[ 3 :] [ 'PHP' , 'java' , 'C' , 'C++' , 'Lisp' ] >>> LanguageList[: 3 ] [ 'Python' , 'Shell' , 'Perl' ] >>> LanguageList[ 2 : 5 ] [ 'Perl' , 'PHP' , 'java' ] |
1
2
3
4
5
6
7
8
9
10
|
>>> LanguageList[ - 1 ] #倒数第一个值 'Lisp' >>> LanguageList[ - 2 ] #倒数第二个值 'C++' >>> LanguageList[ - 5 :] [ 'PHP' , 'java' , 'C' , 'C++' , 'Lisp' ] >>> LanguageList[ - 5 : - 2 ] [ 'PHP' , 'java' , 'C' ] >>> LanguageList[: - 2 ] [ 'Python' , 'Shell' , 'Perl' , 'PHP' , 'java' , 'C' ] |
增加元素
1
2
3
4
5
6
7
8
9
10
11
|
>>> LanguageList [ 'Python' , 'Shell' , 'Perl' , 'PHP' , 'java' , 'C' , 'C++' , 'Lisp' ] >>> LanguageList.append( 'GO' ) >>> LanguageList [ 'Python' , 'Shell' , 'Perl' , 'PHP' , 'java' , 'C' , 'C++' , 'Lisp' , 'GO' ] >>> LanguageList.insert( 3 , 'Python' ) #往PHP元素前插入 >>> LanguageList [ 'Python' , 'Shell' , 'Perl' , 'Python' , 'PHP' , 'java' , 'C' , 'C++' , 'Lisp' , 'GO' ] >>> LanguageList.extend([ 'Ruby' , 'C#' ]) >>> LanguageList [ 'Python' , 'Shell' , 'Perl' , 'Python' , 'PHP' , 'java' , 'C' , 'C++' , 'Lisp' , 'GO' , 'Ruby' , 'C#' ] |
搜索
>>> LanguageList = ['Python', 'Shell', 'Perl', 'Python', 'PHP', 'java', 'C', 'C++', 'Lisp', 'GO', 'Ruby', 'C#'] >>> LanguageList.index('Python') 0 >>> LanguageList.index('C') 6 >>> LanguageList.index('c') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: list.index(x): x not in list >>> 'c' in LanguageList False >>> LanguageList.index('Python') #统计一个元素的出现次数 2
删除元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
>>> LanguageList = [ 'Python' , 'Shell' , 'Perl' , 'Python' , 'PHP' , 'java' , 'C' , 'C++' , 'Lisp' , 'GO' , 'Ruby' , 'C#' ] >>> LanguageList.remove( 'C' ) >>> LanguageList.remove( 'Python' ) >>> LanguageList.remove( 'c' ) Traceback (most recent call last): File "<stdin>" , line 1 , in <module> ValueError: list .remove(x): x not in list >>> LanguageList.pop() 'C#' >>> LanguageList [ 'Shell' , 'Perl' , 'Python' , 'PHP' , 'java' , 'C++' , 'Lisp' , 'GO' , 'Ruby' ] >>> LanguageList.pop( - 2 ) [ 'Shell' , 'Perl' , 'Python' , 'PHP' , 'java' , 'C++' , 'Lisp' , 'Ruby' ] >>> del LanguageList[ - 3 : - 1 ] >>> LanguageList [ 'Shell' , 'Perl' , 'Python' , 'PHP' , 'java' , 'Ruby' ] |
remove从列表中只删除一个值的首次出现。
pop会做两件事: 删除列表的最后一个元素, 然后返回删除元素的值。
修改元素
1
2
3
4
5
6
7
|
>>> LanguageList = [ 'Python' , 'Shell' , 'Perl' , 'Python' , 'PHP' , 'java' , 'Ruby' ] >>> LanguageList[ - 2 ] = 'C' >>> LanguageList [ 'Python' , 'Shell' , 'Perl' , 'Python' , 'PHP' , 'C' , 'Ruby' ] >>> LanguageList[LanguageList.index( 'C' )] = 'JAVA' >>> LanguageList [ 'Python' , 'Shell' , 'Perl' , 'Python' , 'PHP' , 'JAVA' , 'Ruby' ] |
运算符
1
2
3
4
5
6
7
8
9
10
11
|
>>> LanguageList [ 'Shell' , 'Perl' , 'Python' , 'PHP' , 'java' , 'C++' , 'Lisp' , 'GO' , 'Ruby' ] >>> LanguageList = LanguageList + [ 'Python' , 'C' ] >>> LanguageList [ 'Shell' , 'Perl' , 'Python' , 'PHP' , 'java' , 'C++' , 'Lisp' , 'GO' , 'Ruby' , 'Python' , 'C' ] >>> LanguageList + = [ 'java' ] >>> LanguageList [ 'Shell' , 'Perl' , 'Python' , 'PHP' , 'java' , 'C++' , 'Lisp' , 'GO' , 'Ruby' , 'Python' , 'C' , 'java' ] >>> NumList = [ 1 , 2 , 3 ] * 3 >>> NumList [ 1 , 2 , 3 , 1 , 2 , 3 , 1 , 2 , 3 ] |
排序
1
2
3
4
5
6
7
8
9
10
|
>>> NumList = [ 2 , 5 , 3 , 6 , 1 , 4 ] >>> NumList.reverse() >>> NumList [ 4 , 1 , 6 , 3 , 5 , 2 ] >>> NumList[:: - 1 ] #和reverse效果相同 >>> NumList [ 2 , 5 , 3 , 6 , 1 , 4 ] >>> NumList.sort() >>> NumList [ 1 , 2 , 3 , 4 , 5 , 6 ] |
sort可接受参数
cmp,比较函数,接受两个参数,小于时返回负,大于返回正,相等返回0 key,指定排序键 reverse,指定是否反序
列表的比较操作 , 隐式调用cmp方法 , 比较规则是逐个扫描元素进行比较, 如果可以比较 , 则比较, 如果相等扫描下一个元素 , 如果不相等返回结果 , 如果两个元素类型不可以比较 , 就比较两个对象的 id()值。如果一直相等 ,直到一个列表扫描结束 , 那么返回较长的列表较大
1
2
3
4
5
6
7
|
>>> L = [( 13 , 54 ),( 11 , 59 ),( 15 , 55 ),( 12 , 57 ),( 10 , 56 )] >>> L.sort(key = lambda x:x[ 1 ]) >>> L [( 13 , 54 ), ( 15 , 55 ), ( 10 , 56 ), ( 12 , 57 ), ( 11 , 59 )] >>> L.sort(key = lambda x:x[ 1 ],reverse = 1 ) #或者reverse=True >>> L [( 11 , 59 ), ( 12 , 57 ), ( 10 , 56 ), ( 15 , 55 ), ( 13 , 54 )] |
sort与sorted函数区别
1
2
3
4
5
6
7
8
|
NumList = [ 2 , 5 , 3 , 6 , 1 , 4 ] >>> sorted (NumList) [ 1 , 2 , 3 , 4 , 5 , 6 ] >>> NumList [ 2 , 5 , 3 , 6 , 1 , 4 ] >>> NumList.sort() >>> NumList [ 1 , 2 , 3 , 4 , 5 , 6 ] |
sort: 在原list上排序,不返回排序后的list
sorted: 不改变原list,返回排序后的list