一组有序项目的集合 可变的数据类型【可进行增删改查】 列表中可以包含任何数据类型,也可包含另一个列表【可任意组合嵌套】 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔 列表可通过序号访问其中成员
定义
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