Python——数据类型之list、tuple
本篇主要内容
• list初识
• list元素的访问
• list内部所有的方法
• tuple介绍和与list用法的比较
我觉得Python里面用的最多的就是List了,感觉好强大。他能存各种东西。
1、首先直观的看一下list这个数据类型
a=[1,2.1,True,'12',[1,2]] for i in a: print(i)
输出之后
1 2.1 True 12 [1, 2]
里面的for循环之前说过了,能遍历里面的所有元素。可以直观的看到,list里面可以存各种数据类型的东西。
2、list的访问
第一种是跟C一样,直接下标
a=[1,2,3,4,5] print(a[0]) print(a[4])
输出
1 5
注意这里也是从0开始访问第一个元素。
第二种,Python支持反向访问。
a=[1,2,3,4,5] print(a[-1])#访问倒数第一个 print(a[-2])#访问倒数第二个
输出
5 4
第三种,区间访问
a=[1,2,3,4,5] print(a[0:2])#访问第1个到第2个数据。 print(a[1:4])#访问第2个到第4个数据
输出
[1, 2]
[2, 3, 4]
这里要注意,两个数字之间是冒号,a[m:n]指的是访问从[m,n),前闭后开区间的数据。所以a[1:4]访问的是下标[1,4),也就是第2到第4个数据。(下标为4的第5个数据没有访问到)
3、list类的方法
(1)append:在列表最后追加元素
a=[1,2,3,4,5] print(a) a.append(6) print(a)
输出
[1, 2, 3, 4, 5] [1, 2, 3, 4, 5, 6]
(2) clear:删除所有元素
a=[1,2,3,4,5] print(a) a.clear() print(a)
输出
[1, 2, 3, 4, 5]
[]
(3) copy:复制得到一个一模一样的列表
a=[1,2,3,4,5] b=a.copy() print(b)
输出
[1, 2, 3, 4, 5]
这里要注意与b=a的区别。b=a只是把a的地址给b了,修改b还是等于修改a。
注意下面两个代码的区别
a=[1,2,3,4,5] print(a)#初始的a b=a.copy() b.clear()#将b清空 print(a)#把b清空后的a print(b)#把b清空后的b
输出
[1, 2, 3, 4, 5] [1, 2, 3, 4, 5] []
把b=a.copy改成b=a
a=[1,2,3,4,5] print(a)#初始的a b=a b.clear()#将b清空 print(a)#把b清空后的a print(b)#把b清空后的b
输出
[1, 2, 3, 4, 5]
[]
[]
这点跟C语言一模一样。。。用的时候一定要注意。
(4)count(self, value):统计某个值输出的次数
a=[1,2,3,3,4,5] print(a.count(1)) print(a.count(3)) print(a.count(6))
输出
1
2
0
当然,这里不一定是数字,
a=['I Love You','I Love Albert','I Love YZP','I Love You'] print(a.count('I Love You'))
输出
2
(5)extend(self, iterable):在后面追加一个列表
a=[1,2,3,4,5] b=[6,7,8,9] a.extend(b) print(a)
输出
[1, 2, 3, 4, 5, 6, 7, 8, 9]
(6)index(self, value, start=None, stop=None),从start与end之间查找value的索引值。默认从列表的全部查找。
a=[1,2,3,4,5,6,7,8,9] print(a.index(7)) print(a.index(7,0,7)) print(a.index(7,0,6))
输出
6 Traceback (most recent call last): 6 File "C:/Users/admin/PycharmProjects/temp.py", line 5, in <module> print(a.index(7,0,6)) ValueError: 7 is not in list
注意:[start,end)也是前闭后开区间。
如果找不到会报错ValueError
(7)insert(self, index, p_object):在索引index后插入一个值p_object
a=[1,2,3,4,5,6,7,8,9] a.insert(6,7) print(a)
输出
[1, 2, 3, 4, 5, 6, 7, 7, 8, 9]
(8)pop(self, index=None):删除索引为index的值,默认删除最后一个。
a=[1,2,3,4,5,6,7,8,9] print(a) a.pop() print(a) a.pop(0) print(a)
输出
[1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8] [2, 3, 4, 5, 6, 7, 8]
(9) remove(self, value):删除列表中值为value的元素
a=[1,2,3,4,5,6,7,8,9] a.remove(7) print(a)
输出
[1, 2, 3, 4, 5, 6, 8, 9]
注意,如果列表中有多个值为value的元素,它只删除第一个。
(10)reverse(self):列表反转
a=[1,2,3,4,5,6,7,8,9] a.reverse() print(a)
输出
[9, 8, 7, 6, 5, 4, 3, 2, 1]
(11)sort(self, key=None, reverse=False):给列表排序key是表示按照某个规则排序,reverse是选择升序还是降序,默认升序。
def Sec(a): return a[1] a=[[1,2],[4,3],[3,1]] a.sort(key=Sec,reverse=True) print(a)
输出
[[4, 3], [1, 2], [3, 1]]
代表按照列表中每个元素的第二个元素降序。Sec函数就是返回第二个元素的值。
list内部的方法就这么多了。
第二个就是tuple(元组)
tuple其实跟list差不多,但tuple的内部元素初始化后不能修改。(可以再重新初始化)
a=(1,2,3,4,5) print(a) a=(6,7,8,9,0)#重新初始化元组 print(a) a[0]=9#试图修改元组里面的元素
输出
(1, 2, 3, 4, 5)
(6, 7, 8, 9, 0)
但又报错
Traceback (most recent call last): File "C:/Users/admin/PycharmProjects/temp.py", line 6, in <module> a[0]=9#试图修改元组里面的元素 TypeError: 'tuple' object does not support item assignment
谨记:元组元素初始化后不能修改
元组的方法
(1) count(self, value):统计value的数目,用法跟list一样
(2)index(self, value, start=None, stop=None),用法同list