代码改变世界

Python 列表list

2018-04-10 21:06  钱先生  阅读(196)  评论(0编辑  收藏  举报

列表list: [ ]

类似Java中的数组. 通过索引可以取到具体位置上的值.

1 names = ["ZhangYang","WangGui","LiQiang"]
2 print(names)
3 print(names[0])

 

1 #取数组中相邻的一些数
2 names = ["Ada","Sasha","Rose","Luke","Sara"]
3 print(names[1:3])   #顾头不顾尾, 这样写是取索引为1和2的值.

 切片

 1 #取数组最后一位的值
 2 print(names[-1]) #从右向左数第一位. 也可以[-2],就是取倒数第二位的值.
 3 
 4 #取数组最后两位的值
 5 print(names[-1:-3]) #这样写会报错,因为系统是从左向右数的, 所以-1数完后边已经没有了.
 6 
 7 print(names[-3:-1]) #正确写法
 8 
 9 #取倒数第二个和倒数第三个
10 print(names[-2:])
11 
12 #取前两位
13 print(names[3]) #相当于print(names[0:3]), 0省略了

 

追加

1 names.append("Nick")

 

添加数据并放在中间的位置.  / 修改.

1 names = ["Ada","Sara","Candy","Cathy","Jessica","Diana"]
2 
3 #添加数据插入Sara前面
4 names.insert(1,"Venus")  #想放在哪个位置,参数就写对应的索引.
5 
6 
7 #修改. 把Candy换掉.
8 names[2] = 'XieDi"

 

删除

1 #删除方法1:
2 names.remove("Ada")
3 
4 #删除方法2:
5 del names[0]
6 
7 #删除方法3:
8 names.pop()  #默认删掉最后一个值.
9 names.pop(1)  #等同于del names[1]

 

查找 / 清空

 1 # 查找Ada的位置
 2 print(names.index("Ada"))
 3 print(names[(names.index("Ada")] #根据找到的索引打印出对应位置的值
 4 
 5 
 6 #当存在重复数据时, 计算重复数据的个数
 7 names = ["Ada","Sara","Cathy","Candy","Diana","Ada"]
 8 print(names.count("Ada"))
 9 
10 
11 
12 #清空列表
13 names.clear()

 

反转 / 排序

1 #反转列表
2 names = ["Ada","Sara","Cathy","Candy","Diana","Ada"]
3 
4 names.reverse()
5 
6 
7 #排序
8 names.sort()

 

添加列表 (类似合并数组)  / 删掉列表

1 #合并列表
2 names2 = [1,2,3,4]
3 
4 names.extend(names2)
5 
6 
7 #删掉列表names2
8 del names2

 

extend和append的区别:

 1 a = ['1','2','3']
 2 b = ['2','0']
 3 c = ['6','3']
 4 a.extend(b) # 将另一个列表的元素添加到当前列表中
 5 print(a)
 6 print('=====================================')
 7 a.append(c) # 将另一个列表作为一个元素添加到当前列表中
 8 print(a)
 9 
10 '''
11 返回值
12 ['1', '2', '3', '2', '0']
13 ======================================
14 ['1', '2', '3', '2', '0', ['6', '3']]
15 '''

 

 

 

复制

1 #复制
2 name2 = names.copy()

 

数组包含数组时修改内嵌数组中的数据

 1 # 数组包含数组时修改内嵌数组中的数据
 2 
 3 # 方法1 : copy 浅复制
 4 # 数组中内嵌数组的内容在复制时,其实复制的是该内嵌数组的地址,所以当修改该内嵌数组中的数据时,无论原始数组还是复制后的数组,其内嵌数组中的数据都会随之改变.
 5 # 但是原始数组中其他值则是直接将该值指向复制后的数组,所以当原始数组中这些值改变时,复制后的数组对应位置的值保持不变.
 6 names = ["Ada","Jessica","Cathy","Candy","Luke",["ada","Sara","Mika"]]
 7 
 8 names2 = names.copy()
 9 names[2] = "Lucy"
10 names[5][0] = "ADA"
11 print(names) # Cathy被修改成Lucy;  ADA改成大写.
12 print(names2) # Cathy不改变. ADA改成大写
13 
14 
15 # 方法2: import copy, 调用copy.copy()方法和列表中的copy()一样效果
16 import copy
17 names3 = copy.copy(names)
18 names[0] = "Lucy"
19 names[5][1] = "ADA"
20 print(names) # Cathy被修改成Lucy;  ADA改成大写.
21 print(names3) # Cathy不改变. ADA改成大写
22 
23 
24 # 方法3: import copy, 调用copy. deepcopy()方法. 深copy, 可以达到复制内嵌列表中值的效果
25 names4 = copy.deepcopy(names)
26 names[3] = "Lucy"
27 names[5][0] = "ada"
28 print(names) # Cathy被修改成Lucy;  ADA改成大写.
29 print(names4) # Cathy不改变. ADA也不改变
30 
31 
32 # 方法4, 切片的方式实现浅copy
33 names5 = names[:]
34 
35 
36 # 方法5, 另外一种浅copy的方法
37 names6 = list(names)
38 
39 
40 # 浅copy在银行公共帐户情形中非常有用. 夫妻二人共开同一个帐户时,每个人取钱都会影响帐户中的总额.

 

 

列表的循环 / 跳着打印列表中的值

1 # 列表的循环
2 for i in names:
3     print(i)
4 
5 # 跳着打印列表中的值
6 print(names[0:-1:2]) # 每隔一个打印一次. 2代表步长.
7 print(names[::2]) # 0和-1都可以省略,所以写成这样.