Python全栈之路----数据结构—列表

     1.列表是一个数据的集合,集合内可以放任何数据类型,可对集合进行方便的增删改查操作。列表里面的数可以重复。

L1 = [ ] #定义空列表          
L2 = [ 'a' , 'b' , 'c' , 'd' ] #存四个值,索引为0-3       
L3 = [ 'abc' , [ 'def' , 'ghi' ] ] #嵌套列表

     2.列表的功能:

      创建,查询( L[n]索引值为n的元素;L.count(n)查找有多少个元素为n;L.index(n)查找元素为n的索引值),切片,增加(L.append(n)在最后加入为n的元素;L.insert(m,n)在索引值为m的位置插入元素n),修改,删除(L del[n]删除索引值为n的元素;L.remove(n)删除从左边数第一个为n的元素;L.pop()删除最后一个元素,返回最后一个元素的值),循环,排序(字符和数字单独排序,L.sort()正序 ;L.reserve()倒序)。

 1 >>> L2 = ['a','b','c','d','e',1,2] #创建一个列表
 2 >>> L2[2] #通过索引取值
 3   'c'
 4  >>> L2[-1] #通过索引从裂变右边开始取值
 5   2
 6  >>> L2.index('a') #返回指定元素索引值,从左向右查找,找到第一个匹配的字符的位置
 7   0
 8  >>> L3 = [1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,5,5,8,8,8,8,8,8]
 9  >>> L3[2] #通过索引值取值
10  1
11  >>> L3.count(3) #查找有多少个字符为3的索引
12  7
13  >>> n = L3.index(2)
14  >>> L3[n] #n是L3种2的索引值,L3[n]是索引值为n的元素
15  2
16  >>> L3[L3.index(2)]
17  2
18  >>> L3[0:3] #列表切片,顾头不顾尾
19  [1, 1, 1]
20  >>> L3[-5:-1] #后面的列表切片,顾头不顾尾
21  [8, 8, 8, 8]
22  >>> L3[-5:] #-5位置的字符及其后面的所有字符
23  [8, 8, 8, 8, 8]
24  >>> L3[:3]
25  [1, 1, 1]
26  >>> L3[:] #和L3输出结果一致
27  [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 8, 8, 8, 8, 8, 8]
28  >>> L3[:7:2] #0-6切片,先取L3[0],然后每两个取一个
29  [1, 1, 1, 2]
30  >>> L3[:9:3] #3叫做步长
31  [1, 1, 2]
32  >>> L3.append('Alex') #在列表最后面追加字符
33  >>> L3
34  [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 8, 8, 8, 8, 8, 8, 'Alex']
35  >>> L3.insert(0,'Jane') #在列表索引值为0的位置插入数据Jane
36  >>> L3
37  ['Jane', 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 8, 8, 8, 8, 8, 8, 'Alex']
38  >>> L3[3] = 'Mary' #把索引值为3的位置的元素替换成Mary
39  >>> L3
40  ['Jane', 1, 1, 'Mary', 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 8, 8, 8, 8, 8, 8, 'Alex']
41  >>> L3[4:6] = 'PeiQi' #批量修改,由于位置不够,PeiQi被拆分,后面的元素后移
42 >>> L3
43  ['Jane', 1, 1, 'Mary', 'P', 'e', 'i', 'Q', 'i', 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 8, 8, 8, 8, 8, 8, 'Alex']
44  >>> L3.pop() #删除最后一个元素,返回最后一个元素的值
45  'Alex'
46  >>> L3.remove(4) #删除从左边数第一个为4的元素
47  >>> L3
48  ['Jane', 1, 1, 'Mary', 'P', 'e', 'i', 'Q', 'i', 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 8, 8, 8, 8, 8, 8]
49  >>> del L3[3] #全局性指令,删除索引值为3的元素
50  >>> L3
51  ['Jane', 1, 1, 'P', 'e', 'i', 'Q', 'i', 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 8, 8, 8, 8, 8, 8]
52  >>> del L3[8:16] #批量删除,顾头不顾尾
53  >>> L3
54  ['Jane', 1, 1, 'P', 'e', 'i', 'Q', 'i', 3, 3, 3, 3, 3, 4, 4, 5, 5, 8, 8, 8, 8, 8, 8]

(3)列表是有序的,但int和str类型不能一起排序。str按照ASCII排序,sort是排序,reverse是顺序反过来,extend是扩展,clear是把整个列表清空,copy是拷贝。

copy:  查看内存地址  id(i)  变量有地址,列表本身有一个地址,列表中的每一个元素又都有自己单独的地址

          如果 a = 1   a = b  ,b指向的是1,不是a,b不随着a的变化而变化;

          如果L1 = L ,L1指向L的内存地址,将L的内存地址比作一个装了很多水果的果盘,那么L1也指的是这个果盘,那么L变化实际是果盘变化,所以L1随L的变化而变化,同时L也会随L1的变化而变化;

          如果L1 = L.copy(),将L的内存地址比作一个装了很多水果的果盘,那么L1指的是将这个果盘复制的一个新果盘,但是果盘里的水果并没有被复制,水果是两个果盘共享,所以L变化是旧果盘变化,新果盘不变,所以L1不随L的变化而变化;

猜你喜欢

转载自www.cnblogs.com/Moxiaoyu666/p/10257606.html