1 列表定义及特点
(1)列表是用[]括起来的元素列表,类似于其他编程语言种的数组
>> > a= [ 1 , 2 , 3 , 4 ]
>> > a= [ "hello" , "world" , "haha" ]
>> > type ( a)
< class 'list' >
(2)python中列表中的元素时可以不同类型的(其他编程语言种数组中的所有元素必须为同一类型)
>> > a= [ 1 , 2 , "hello" , "world" ]
>> > type ( a)
< class 'list' >
>> > a= [ 1 , 2 , "hello" , "world" , [ 4 , 5 , 6 ] ]
>> > type ( a)
< class 'list' >
2 列表中的基本运算
(1)列表可以通过下标索引取列表中的元素,索引从0开始,不能超出列表的长度范围
>> > a= [ 1 , 2 , 3 , 4 , 5 ]
>> > a[ 0 ]
1
>> > a[ 4 ]
5
>> > a[ 5 ]
Traceback ( most recent call last) :
File "<stdin>" , line 1 , in < module>
IndexError: list index out of range
(2)取列表元素的索引值可以是负数,负数时表示从右边开始计数,比如-1表示最后面一个,-2表示倒数第二个
>> > a= [ 1 , 2 , 3 , 4 , 5 ]
>> > a[ - 1 ]
5
>> > a[ - 2 ]
4
>> > a[ - 5 ]
1
>> > a[ - 6 ]
Traceback ( most recent call last) :
File "<stdin>" , line 1 , in < module>
IndexError: list index out of range
(3)列表可以通过切片取出列表中的一部分元素,切片坚持左闭右开原则
>> > a= [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
>> > a[ 0 : 3 ]
[ 1 , 2 , 3 ]
>> > a[ 5 : 8 ]
[ 6 , 7 , 8 ]
>> > a[ 0 : 8 ]
[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]
(4)列表的切片操作中第一个参数或者第二个参数是可以省略的,第一个参数省略时表示从第一个开始,第二个参数省略时表示右侧取到最后一个
>> > a= [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
>> > a[ : 4 ]
[ 1 , 2 , 3 , 4 ]
>> > a[ 5 : ]
[ 6 , 7 , 8 , 9 ]
>> > a[ : ]
[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
(5)列表的切片操作中第二参数的可以超出列表的长度,超出后默认取到最后一个元素
>> > a= [ 1 , 2 , 3 , 4 , 5 ]
>> > a[ 3 : 10 ]
[ 4 , 5 ]
(6)列表的切片操作第一个参数表示的位置可以在第二个参数表示的位置的右侧,此时返回值为空列表
>> > a= [ 1 , 2 , 3 , 4 , 5 ]
>> > a[ 4 : 1 ]
[ ]
>> > a[ - 1 : 4 ]
[ ]
(7)列表的切片操作可以有三个参数,第二个参数表示步长
>> > a= [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
>> > a[ 0 : 5 : 2 ]
[ 1 , 3 , 5 ]
>> > a[ 2 : 8 : 4 ]
[ 3 , 7 ]
>> > a= [ 1 , 2 , 3 , 4 ]
>> > len ( a)
4
>> > a= [ ]
>> > len ( a)
0
>> > a= [ 1 , 2 , 3 , 4 ]
>> > max ( a)
4
>> > a= [ "hello" , "world" , "ok" ]
>> > max ( a)
'world'
>> > a= [ 1 , 2 , 3 , 4 ]
>> > min ( a)
1
>> > a= [ "hello" , "world" , "ok" ]
>> > min ( a)
'hello'
>> > a= [ 1 , 2 , 3 , 4 , 5 ]
>> > sum ( a)
15
(12)in ,not in 判断列表中是否有某元素
>> > a= [ 1 , 2 , 3 , 4 , 5 ]
>> > 0 in a
False
>> > 0 not in a
True
>> > 1 in a
True
(13)两个列表可以用加号连接起来构造一下新的列表
>> > [ 1 , 2 , 3 ] + [ 4 , 5 , 6 ]
[ 1 , 2 , 3 , 4 , 5 , 6 ]
(14)列表可以乘以一个整数来对现有列表进行元素数数倍复制
>>> [1,2,3]*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
3 列表中的常用函数
(1)append(obj) 向列表中增加一个元素
>> > a= [ 1 , 2 , 3 ]
>> > a. append( 4 )
>> > a
[ 1 , 2 , 3 , 4 ]
>> > a. append( "hello" )
>> > a
[ 1 , 2 , 3 , 4 , 'hello' ]
>> > a= [ 1 , 2 , 3 ]
>> > a. clear( )
>> > a
[ ]
(3)copy() 返回列表的一个浅拷贝,浅拷贝需要注意的是如果列表中的元素时可变元素,则返回的copy的元素会跟着原来的列表变化而变化
>> > a= [ 1 , 2 , 3 , [ 5 , 6 , 7 ] ]
>> > b= a. copy( )
>> > a
[ 1 , 2 , 3 , [ 5 , 6 , 7 ] ]
>> > b
[ 1 , 2 , 3 , [ 5 , 6 , 7 ] ]
>> > a[ 3 ] . append( 8 )
>> > a
[ 1 , 2 , 3 , [ 5 , 6 , 7 , 8 ] ]
>> > b
[ 1 , 2 , 3 , [ 5 , 6 , 7 , 8 ] ]
>> > a[ 1 ] = 100
>> > a
[ 1 , 100 , 3 , [ 5 , 6 , 7 , 8 ] ]
>> > b
[ 1 , 2 , 3 , [ 5 , 6 , 7 , 8 ] ]
(4)count(value) 返回列表中给定的参数值的个数
>> > a= [ 1 , 2 , 3 , 4 , 3 , 2 , 3 , 4 , 3 , 2 , 1 , 3 , 4 , 2 ]
>> > a. count( 2 )
4
>> > a. count( 3 )
5
>> > a. count( 0 )
0
(5)index(value,start=0,stop=9223372036854775807) 返回列表中某个值的位置索引,如果不存在则报ValueError
>> > a= [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ]
>> > a. index( 1 )
0
>> > a. index( 1 , 3 , 5 )
Traceback ( most recent call last) :
File "<stdin>" , line 1 , in < module>
ValueError: 1 is not in list
>> > a. index( 5 , 3 , 5 )
4
(6)insert(index,obj) 向列表中的指定位置插入数据
>> > a= [ 1 , 2 , 3 , 4 , 5 ]
>> > a. insert( 0 , 100 )
>> > a
[ 100 , 1 , 2 , 3 , 4 , 5 ]
>> > a. insert( 3 , 300 )
>> > a
[ 100 , 1 , 2 , 300 , 3 , 4 , 5 ]
>> > a. insert( 7 , 700 )
>> > a
[ 100 , 1 , 2 , 300 , 3 , 4 , 5 , 700 ]
(7)pop(index=-1) 弹出列表中指定位置的元素,如不指定默认弹出最后一个
>> > a= [ 1 , 2 , 3 , 4 , 5 , 6 ]
>> > b= a. pop( )
>> > b
6
>> > a
[ 1 , 2 , 3 , 4 , 5 ]
>> > b= a. pop( 3 )
>> > b
4
>> > a
[ 1 , 2 , 3 , 5 ]
(8)remove(value) 删除列表中的第一个与给定值一致的值
>> > a= [ 1 , 2 , 3 , 4 , 3 , 2 , 1 , 2 , 3 ]
>> > a. remove( 2 )
>> > a
[ 1 , 3 , 4 , 3 , 2 , 1 , 2 , 3 ]
>> > a= [ 1 , 2 , 3 , 4 , 5 ]
>> > a. reverse( )
>> > a
[ 5 , 4 , 3 , 2 , 1 ]
>> > a. reverse( )
>> > a
[ 1 , 2 , 3 , 4 , 5 ]
(10)sort(key=None,reverse=False) 对列表元素进行排序,如果reverse不指定则默认升序,若设置为True,则为降序,key 可以自定义排序规则,其中,可以为一个函数,作用于列表的每个元素,按照返回值的的大小对原数据进行排序
>> > a= [ 1 , 2 , 3 , 4 ]
>> > a. sort( )
>> > a
[ 1 , 2 , 3 , 4 ]
>> > a. sort( reverse= True )
>> > a
[ 4 , 3 , 2 , 1 ]
>> > def func ( a) :
. . . return len ( a)
. . .
>> > def func2 ( a) :
. . . return a[ 0 ]
. . .
>> > a= [ "hello" , "world" , "ha" , "hehehehe" , "ok" ]
>> > a. sort( key= func)
>> > a
[ 'ha' , 'ok' , 'hello' , 'world' , 'hehehehe' ]
>> > a. sort( key= func2)
>> > a
[ 'hello' , 'ha' , 'hehehehe' , 'ok' , 'world' ]
(11) extend(iterable) 将一个列表合并到当前列表
>> > a= [ 1 , 2 , 3 ]
>> > b= [ "hello" , "world" ]
>> > a
[ 1 , 2 , 3 ]
>> > b
[ 'hello' , 'world' ]
>> > a. extend( b)
>> > a
[ 1 , 2 , 3 , 'hello' , 'world' ]
>> > b
[ 'hello' , 'world' ]
>> > b. extend( a)
>> > b
[ 'hello' , 'world' , 1 , 2 , 3 , 'hello' , 'world' ]
>> > a
[ 1 , 2 , 3 , 'hello' , 'world' ]