python中的存储类型
1.列表
>> > [ 1 , 2 , 3 , 4 , 5 , 'Curry' ]
[ 1 , 2 , 3 , 4 , 5 , 'Curry' ]
>> > test= [ 1 , 2 , 3 , 4 , 5 , 'Curry' ]
>> > print ( test)
[ 1 , 2 , 3 , 4 , 5 , 'Curry' ]
>> > for i in test:
print ( i)
1
2
3
4
5
Curry
1.下标
下标就是列表中对应数值的位置,在计算机世界里数字是从0开始的,所以我们的下标也是从0开始计数的。
列表: [ 1 , 2 , 3 , 4 , 5 , 'curry' ]
对应下标:[ 0 , 1 , 2 , 3 , 4 , 5 ]
2.切片
切片的作用就是将列表内的内容,根据自己的需求来进行截取出来
>> > print ( test[ 0 : 3 ] )
[ 1 , 2 , 3 ]
>> > print ( test[ 1 ] )
2
>> > print ( test[ : ] )
[ 1 , 2 , 3 , 4 , 5 , 'Curry' ]
>> > print ( test[ 1 : ] )
[ 2 , 3 , 4 , 5 , 'Curry' ]
>> > print ( test[ : 3 ] )
[ 1 , 2 , 3 ]
>> > print ( test[ : : 1 ] )
[ 1 , 2 , 3 , 4 , 5 , 'Curry' ]
>> > print ( test[ : : 3 ] )
[ 1 , 4 ]
>> > print ( test[ : : 2 ] )
[ 1 , 3 , 5 ]
>> > print ( test[ 1 : : 2 ] )
[ 2 , 4 , 'Curry' ]
3.增删改查
1.增加
append():添加单个元素
extend():添加多个元素
>> > heros= [ '钢铁侠' , '蜘蛛侠' , '绿巨人' ]
>> > heros. append( '黑豹' )
>> > print ( heros)
[ '钢铁侠' , '蜘蛛侠' , '绿巨人' , '黑豹' ]
>> > heros. extend( [ '灭霸' , '雷神' ] )
>> > print ( heros)
[ '钢铁侠' , '蜘蛛侠' , '绿巨人' , '黑豹' , '灭霸' , '雷神' ]
2.切片式添加内容
>> > heros[ len ( heros) : ] = [ '唐三' ]
>> > print ( heros)
[ '钢铁侠' , '蜘蛛侠' , '绿巨人' , '黑豹' , '灭霸' , '雷神' , '唐三' ]
>> > heros[ len ( heros) : ] = [ '张三' , '李四' ]
>> > print ( heros)
[ '钢铁侠' , '蜘蛛侠' , '绿巨人' , '黑豹' , '灭霸' , '雷神' , '唐三' , '张三' , '李四' ]
3.插入
insert():插入元素
格式:insert(下标位置,插入元素)
>> > s = [ 1 , 2 , 3 , 4 , 5 ]
>> > s. insert( 5 , 6 )
>> > print ( s)
[ 1 , 2 , 3 , 4 , 5 , 6 ]
>> > s. insert( 0 , 0 )
>> > print ( s)
[ 0 , 1 , 2 , 3 , 4 , 5 , 6 ]
>> > s. insert( len ( s) , 7 )
>> > print ( s)
[ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]
4.删除
remove():删除单个元素,如果列表内存在多个重复内容,则删除下标位置最近的一个
pop():根据下标位置删除
clear():清空列表所有内容
>> > print ( heros)
[ '钢铁侠' , '蜘蛛侠' , '绿巨人' , '黑豹' , '灭霸' , '雷神' , '唐三' , '张三' , '李四' ]
>> > heros. remove( '张三' )
>> > print ( heros)
[ '钢铁侠' , '蜘蛛侠' , '绿巨人' , '黑豹' , '灭霸' , '雷神' , '唐三' , '李四' ]
>> > heros. pop( len ( heros) - 1 )
'李四'
>> > print ( heros)
[ '钢铁侠' , '蜘蛛侠' , '绿巨人' , '黑豹' , '灭霸' , '雷神' , '唐三' ]
>> > heros. clear( )
>> > print ( heros)
[ ]
5.改
根据列表的下标进行元素替换
>> > heros= [ '猪猪侠' , '菲菲' , '小呆呆' ]
>> > heros[ 0 ] = 'juju-bay'
>> > print ( heros)
[ 'juju-bay' , '菲菲' , '小呆呆' ]
>> > heros[ : 2 ] = [ '超人强' , '肥波' ]
>> > print ( heros)
[ '超人强' , '肥波' , '小呆呆' ]
根据大小进行排序
使用sort函数可以直接将列表内的内容排序
>> > nums= [ 3 , 2 , 4 , 5 , 2 , 1 , 4 , 5 , 6 , 7 , 8 ]
>> > nums. sort( )
>> > nums
[ 1 , 2 , 2 , 3 , 4 , 4 , 5 , 5 , 6 , 7 , 8 ]
>> > nums. reverse( )
>> > nums
[ 8 , 7 , 6 , 5 , 5 , 4 , 4 , 3 , 2 , 2 , 1 ]
>> > nums= [ 3 , 2 , 4 , 5 , 2 , 1 , 4 , 5 , 6 , 7 , 8 ]
>> > nums. sort( reverse= True )
>> > nums
[ 8 , 7 , 6 , 5 , 5 , 4 , 4 , 3 , 2 , 2 , 1 ]
6.查
index():查询元素的下标
count():查询元素在列表中出现的次数
//查元素的下标
>>> print (heros)
['超人强', '肥波', '小呆呆']
>>> heros.index('小呆呆')
2
>>> heros[heros.index('小呆呆')]='菲菲'
>>> heros
['超人强', '肥波', '菲菲']
//查元素的数量
>>> nums.count(2)
2
>>> nums
[8, 7, 6, 5, 5, 4, 4, 3, 2, 2, 1]
7.拷贝列表
copy():复制列表
>> > heros_1= heros. copy( )
>> > heros_1
[ '超人强' , '肥波' , '菲菲' ]
// 切片拷贝列表
>> > heros_2= heros[ : ]
>> > heros_2
[ '超人强' , '肥波' , '菲菲' ]
2.二维列表
>> > test= [ [ 1 , 2 , 3 ] , [ 'a' , 'b' , 'c' ] , [ 'A' , 'B' , 'C' ] ]
>> > print ( test[ 0 ] [ 2 ] )
3
>> > print ( test[ 2 ] [ 0 ] )
A
创建一个二维列表
>> > A = [ 0 ] * 3
>> > print ( A)
[ 0 , 0 , 0 ]
>> > for i in range ( 3 ) :
A[ i] = [ 0 ] * 3
>> > print ( A)
[ [ 0 , 0 , 0 ] , [ 0 , 0 , 0 ] , [ 0 , 0 , 0 ] ]
di'er' zhon
>> > A = [ [ 0 ] * 3 for i in range ( 3 ) ]
>> > print ( A)
[ [ 0 , 0 , 0 ] , [ 0 , 0 , 0 ] , [ 0 , 0 , 0 ] ]
3.拷贝列表类型
1.浅拷贝
一维列表的浅拷贝:可以发现当b赋予了a的值,对a的值做出了改变,b的值也随着改变,这就叫做浅拷贝
>> > a= [ 1 , 2 , 3 ]
>> > b= a
>> > a[ 1 ] = 4
>> > print ( b)
[ 1 , 4 , 3 ]
二维列表浅拷贝:
>> > a= [ [ 1 , 2 , 3 ] , [ 1 , 2 , 3 ] ]
>> > b= a. copy( )
>> > a[ 1 ] [ 1 ] = 4
>> > print ( a)
[ [ 1 , 2 , 3 ] , [ 1 , 4 , 3 ] ]
>> > print ( b)
[ [ 1 , 2 , 3 ] , [ 1 , 4 , 3 ] ]
2.深拷贝
一维列表的深拷贝:可以发现当b赋予了a的值,对a的值做出了改变,b的值没有改变,这就叫做深拷贝
>>> a=[1,2,3]
>>> b=a.copy()
>>> a[1]=4
>>> print (a)
[1, 4, 3]
>>> print (b)
[1, 2, 3]
二维列表的深拷贝:需要调用copy模块中的deepcopy方法
>> > a= [ [ 1 , 2 , 3 ] , [ 1 , 2 , 3 ] ]
>> > import copy
>> > b= copy. deepcopy( a)
>> > a[ 1 ] [ 1 ] = 4
>> > print ( a)
[ [ 1 , 2 , 3 ] , [ 1 , 4 , 3 ] ]
>> > print ( b)
[ [ 1 , 2 , 3 ] , [ 1 , 2 , 3 ] ]
4.列表推导式
一维列表:
>> > oho = [ 1 , 2 , 3 , 4 , 5 ]
>> > for i in range ( len ( oho) ) :
oho[ i] = oho[ i] * 2
>> > print ( oho)
[ 2 , 4 , 6 , 8 , 10 ]
同等于
>> > oho = [ 1 , 2 , 3 , 4 , 5 ]
>> > oho= [ i* 2 for i in oho]
>> > print ( oho)
[ 2 , 4 , 6 , 8 , 10 ]
二维列表:
>> > matrix = [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ] ]
>> > matrix = [ i[ 1 ] for i in matrix]
>> > print ( matrix)
[ 2 , 5 , 8 ]
>> > matrix = [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ] ]
>> > matrix = [ matrix[ i] [ i] for i in range ( len ( matrix) ) ]
>> > print ( matrix)
[ 1 , 5 , 9 ]
列表推导式第二种写法:
// 创建一个二维列表
>> > S = [ [ 0 ] * 3 for i in range ( 3 ) ]
>> > print ( S)
[ [ 0 , 0 , 0 ] , [ 0 , 0 , 0 ] , [ 0 , 0 , 0 ] ]
// 一维列表
>> > even = [ i for i in range ( 10 ) if i % 2 == 0 ]
>> > print ( even)
[ 0 , 2 , 4 , 6 , 8 ]
将二维列表降级为一维列表
>> > matrix = [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ] ]
>> > flatten = [ i for j in matrix for i in j]
>> > print ( flatten)
[ 1 , 2 , 3 , 4 , 5 , 6 , 7