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

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

     2.列表的功能:

      创建,查询,插入,删除,移动,修改,排序

      L[n]  L.count(n)  L.index(n)  L.append(n)  L.insert(m,n)  del L[n]  L.remove(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的变化而变化;

>>> L = ['a','d','b','r','A']
>>> L.sort() #将L排序
>>> L
['A', 'a', 'b', 'd', 'r']>>> L.insert(2,'*')
>>> L.insert(3,'#')
>>> L
['A', 'a', '*', '#', 'b', 'd', 'r']
>>> L.sort() #按照ASCI码排序
>>> L
['#', '*', 'A', 'a', 'b', 'd', 'r']
>>> L.reverse() #把顺序反过来
>>> L
['r', 'd', 'b', 'a', 'A', '*', '#']
>>> L4 = [1,2,3,4]
>>> L + L4 #L和L4拼接在一起
['r', 'd', 'b', 'a', 'A', '*', '#', 1, 2, 3, 4]
>>> L.extend(L4) #把L4扩展到L里面
>>> L
['r', 'd', 'b', 'a', 'A', '*', '#', 1, 2, 3, 4]
>>> L.clear() #清空
>>> L
[]
>>> L = [1,2,4,5]
>>> L.copy()
[1, 2, 4, 5]
>>> L1 = L.copy()
>>> L1
[1, 2, 4, 5]
>>> L=[3,4,5]
>>> L1
[1, 2, 4, 5]
>>> L1 = L
>>> L[2] = 'Alex'
>>> L
[3,4, 'Alex']
>>> L1
[3,4, 'Alex']

(4)深浅copy

①浅copy:n3 = names   两个列表中的小列表元素改变同步,其余元素独立改变

>>> names = ['alex','jack','jane',['LT','19']]
>>> n3 = names.copy()
>>> names
['alex', 'jack', 'jane', ['LT', '19']]
>>> n3
['alex', 'jack', 'jane', ['LT', '19']]
>>> names[0] = 'Alex'
>>> names
['Alex', 'jack', 'jane', ['LT', '19']]
>>> n3
['alex', 'jack', 'jane', ['LT', '19']]
>>> n3[2] = 'Jane'
>>> n3
['alex', 'jack', 'Jane', ['LT', '19']]
>>> names
['Alex', 'jack', 'jane', ['LT', '19']]
>>> n3[3][1] = 20
>>> n3
['alex', 'jack', 'Jane', ['LT', 20]]
>>> names
['Alex', 'jack', 'jane', ['LT', 20]]

②深copy:将列表完全复制,两个列表完全独立

>>> import copy
>>> n = copy.deepcopy(names)
>>> n
['Alex', 'jack', 'jane', ['LT', 20]]
>>> n[3][0] = 'LongTing'
>>> n
['Alex', 'jack', 'jane', ['LongTing', 20]]
>>> names
['Alex', 'jack', 'jane', ['LT', 20]]