Python3 数据类型-列表
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
索引如下图:
列表命名(list):
组成:使用[]括起来,并且把值赋给变量
例:a = ["sunwk","zhubj","shas","tangs"]
列表中的每个元素可以是任何数据类型,如:整型、字符创、列表、元祖、字典等
例:a = [1,[1,2],("ll","ff"),"sunwk"]
例:list1 = list(range(5))
容器类型
任意对象的有序集合,通过索引访问其中改的元素,可变对象。
异构,任意嵌套。
支持在原处修改:
修改制定的索引元素,修改制定的分片,删除语句,内置方法
一 列表方法
二 列表访问(查)
实例(Python3.0+):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
list1 = [ "sunwk" , "zhubj" , "shas" , "tangs" ] # 定义列表list1 print (list1[:]) # 从左到右:打印输出列表所有内容 ['sunwk', 'zhubj', 'shas', 'tangs'] print (list1[ 1 :]) # 从左到右:索引1打印到最后 ['zhubj', 'shas', 'tangs'] print (list1[ 1 : - 1 : 1 ]) # 从左到右:索引1到-1,一个一个取 最后的1是步长 ['zhubj', 'shas'] print (list1[ 1 :: 2 ]) # 从左到右:索引1到最后隔一个去取 ['zhubj', 'tangs'] print (list1[ - 2 :: - 2 ]) # 从右到左隔一个去取 ['shas', 'sunwk'] print (list1[ 2 :: - 2 ]) # 从右到左隔一个去取 ['shas', 'sunwk'] print (list1[ - 2 :]) # 从左到右:索引-2到最后取全部,步长决定取值方向 print (list1[ - 2 : - 4 ]) # 取值失败,-2到-4方向是从右往左,默认步长是1,方向从左到右,两边方向矛盾,导致取值失败 |
三 列表更新(增加)
方法:list.append() list.insert()
实例1(Python3.0+):list.append()
1
2
3
4
5
6
|
list1 = [ "sunwk" , "zhubj" , "shas" , "tangs" ] # 定义列表 list1.append( "lvcm" ) print (list1) # 只能把值插入到列表最后,且只能插入一个 |
实例2(Python3.0+):list.insert()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
list1 = [ "sunwk" , "zhubj" , "shas" , "tangs" ] # 定义列表list1 list1.insert( 1 , "maoj" ) print (list1) # ['sunwk', 'maoj', 'zhubj', 'shas', 'tangs'] # 将数据从插入到任意一个位置,1位索引 list1.insert( - 2 , "lihc" ) print (list1) # ['sunwk', 'maoj', 'zhubj', 'lihc', 'shas', 'tangs'] """ 总结: 添加使用insert时,索引为正数时,添加到索引位置左边,索引为负数时,添加到索引左边 可以把修改列表当做增加使用,在添加多个元素时使用 """ |
四 列表更新(修改)
实例(Python3.0+):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
list1 = [ 'sunwk' , 'zhubj' , 'shas' , 'tangs' ] # 定义列表list1 list1[ 1 ] = "wangyw" # 先取出值,list1[1]取出索引为1的值,然后把“wangyw”赋给list1[1] print (list1) # ['sunwk', 'wangyw', 'shas', 'tangs'] print (list1[ 1 : 3 ]) # ['wangyw', 'shas'] list1[ 1 : 3 ] = [ "a" , "b" ] print (list1) # ['sunwk', 'a', 'b', 'tangs'] """ 修改也可以当做增加使用 """ |
五 列表删除
方法:list.remove() list.pop() del
总结:
- 只有del可以切片删除,pop 和 remove 不能
- 只有pop有返回值,del和remove没有返回值
- 列表删除,只有del可以切片删除,pop 和 remove 不能
实例1(Python3.0+):list.remove()
1
2
3
4
5
6
7
8
9
10
|
list1 = [ 'sunwk' , 'zhubj' , 'shas' , 'tangs' ] # 定义列表list1 list1.remove( "sunwk" ) print (list1) # ['zhubj', 'shas', 'tangs'] list1.remove(list1[ 0 ]) print (list1) # ['shas', 'tangs'] |
实例2(Python3.0+):list.pop()
1
2
3
4
5
6
7
8
9
10
11
12
13
|
list1 = [ 'sunwk' , 'zhubj' , 'shas' , 'tangs' ] # 定义list1 list1.pop( 1 ) print (list1) # ['sunwk', 'shas', 'tangs'] list2 = list1.pop( 1 ) print (list2) # shas pop可以把删除的值赋给变量 list3 = f.pop() # 默认删除最后(索引为-1的值)的值,并把删除的值赋给变量list3 |
实例3(Python3.0+):del
1
2
3
4
5
6
7
8
9
10
11
12
13
|
list1 = [ "0" , "1" , "2" , "3" , "4" , "5" ] del list1[ 0 ] print (list1) # ['1', '2', '3', '4', '5'] """ del 可以切片删除 del list1 <br># 删除整个对象 print(list1) NameError: name 'h' is not defined """ |
六 列表拼接
实例1(Python3.0+):
1
2
3
4
5
|
list1 = [ 1 , 2 , 3 , 4 ] list2 = [ 'abc' , 'lvcm' , 'wangyw' ] print (list1 + list2) # 输出结果:[1, 2, 3, 4, 'abc', 'lvcm', 'wangyw'] # list1 + list2 合并两个列表变成一个新列表,原有列表不变。 |
实例2(Python3.0+):
1
2
3
4
|
list1 = [ 1 , 2 , 3 , 4 ] print (list1 * 2 ) # 输出结果:[1, 2, 3, 4, 1, 2, 3, 4] # list1 * N:把列表重复N次,返回一个新列表,原有列表不变。 |
七 列表复制
实例1(Python3.0):
1
2
3
4
5
6
7
8
|
list1 = [ 1 , 2 , 3 , 4 ] list2 = list1 # 当改变list1中的某个元素的值后,list2会不会改变呢 list1.append( 5 ) print (list1,list2) # 输出结果:[1, 2, 3, 4, 5] [1, 2, 3, 4, 5] 从结果上看,当list1改变时,list2会随之改变。 # 分析:当list2 = list1 时,其实是把list2的引用对象指向了list1,也就是说id(list2) = id(list1),当改变list1中某个元素,id(list1)并未改变,因为列表是支持原处修改的可变类型。 |
实例2(Python3.0):浅复制
1
2
3
4
5
6
7
|
list1 = [ 1 , 2 , 3 , 4 ] list2 = list1[:] list1.append( 4 ) print (list1,list2) # [1, 2, 3, 4, 5] [1, 2, 3, 4],结果表明,list1改变时,list2不变。 # 分析:此赋值方法,只是把list1中的元素取出来赋值给了list2,id(list1) != id(list2) |
实例3(Python3.0):导入模块复制(copy模块)
1
2
3
4
5
6
7
8
|
import copy # 导入copy模块 list1 = [ 1 , 2 , 3 , 4 ] list2 = copy.deepcopy(list1) print ( id (list1), id (list2)) # 12109448 12110280 |
实例4(Python3.0):list.copy()
1
2
3
4
5
6
7
8
9
10
11
|
list1 = [ 'Google' , 'Runoob' , 'Taobao' , 'Baidu' ] # 定义列表list1 list2 = list1.copy() list1.append( 'Souhu' ) print ( "list1 列表:" , list1) # list1 列表: ['Google', 'Runoob', 'Taobao', 'Baidu', 'Souhu'] print ( "list2 列表: " , list2) print ( id (list1), id (list2)) # list2 列表: ['Google', 'Runoob', 'Taobao', 'Baidu'] # list1 改变时,list2不会随之改变 |
八 其它方法
list.count()
计算列表中元素出现次数
实例(Python3.0+):
1
2
3
4
5
6
|
list1 = [ "muyb" , "wangyw" , "duh" , "wangyw" ] # 定义列表list1 num = list1.count( "wangyw" ) print (num) # 2 |
list.extend()
把一个列表中的元素插入到另外一个列表中
实例(Python3.0+):
1
2
3
4
5
6
7
8
9
|
list1 = [ 1 , 2 , 3 ] list2 = [ 4 , 5 , 6 ] list1.extend(list2) # 把列表list2中的元素插入到列表list1中 print (list1) # [1, 2, 3, 4, 5, 6] print (list2) # [4, 5, 6] |
list.index()
查看元素的索引值
实例(Python3.0+):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
list1 = [ "sunwk" , "zhubj" , "tangs" , "shas" ] # 定义列表list1 print (list1.index( "zhubj" )) # zhubj的索引为1 p = list1.index( "zhubj" ) # 把zhubj的索引赋值给p q = list1.index( 'shas' ) # 把shas的索引值赋给q print (list1[p:q]) # 打印索引 1 到 3 的元素 ['zhubj', 'tangs'] print (list1[p:]) # 打印索引1 到 最有的所有元素 ['zhubj', 'tangs', 'shas'] |
list.reverse()
反向列表中元素
实例(Python3.0+):
1
2
3
4
5
6
|
list1 = [ 'Google' , 'Runoob' , 'Taobao' , 'Baidu' ] # 定义列表list1 list1.reverse() print ( "列表反转后: " , list1) # 列表反转后: ['Baidu', 'Taobao', 'Runoob', 'Google'] |
list.clear()
清空列表
实例(Python3.0+):
1
2
3
4
5
6
|
list1 = [ 'Google' , 'Runoob' , 'Taobao' , 'Baidu' ] # 定义列表list1 list1.clear() print ( "列表清空后 : " , list1) # 列表清空后 : [] |
九 列表函数
len()
统计列表元素个数
实例(Python3.0+):
1
2
3
4
5
|
list1 = [ 1 , 2 , 3 , 4 , 5 ] # 定义列表list1 print ( len (list1)) # 5 |