python之元组,列表和字典的区别
Python语言包含6种内建的序列,其中,有两种主要的类型:列表和元组。
列表是可以修改的,而元组不可以,如果要添加或者删除某些元素,就只能用列表,为了限制某些元素,就会用到元组。一般来说,列表可以替代元组。在列表之中,有索引,分片,加,乘等等。
一、list(列表) 用方括号[]
列表是Python的一种内置数据类型,list是一种有序的集合,可以随时添加和删除其中的元素。
获取list中的元素用角标获取,角标可以使用正角标,也可以使用负角标,越界时抛出IndexErro
list中的元素的数据类型也可以不一样(就像Java一样),也可以在list内放另外一个list,这样也就形成了一个多维集合
常用的方法有:
1.len()获取列表的长度
2.X.append(“你好”) 向列表中添加元素
3.X.pop()弹出末尾元素
1 zoo = ['pig','tiger','dog'] 2 print(len(zoo)) 3 zoo.append("nihao") 4 print(zoo) 5 print(zoo.pop()) 6 print(zoo[0]) 7 print(zoo[-1])
单列表操作
1 # 元组操作 2 3 x = [5, 6, 2, 1, 6, 7, 2, 7, 9] 4 5 # append()方法,就是在列表尾部添加元素 6 x.append(2) 7 print(x) 8 9 # insert(开始位置,插入的值),插入一个元素到指定位置 10 x.insert(2, 99) # 2是索引,表示这个元素要放什么位置,99是插入的元 11 print(x) 12 13 # 删除元素 remove() 14 x.remove(2) # 这个2是指一个元素不是索引,如果多个,默认移除第一个 15 print(x) 16 17 x.remove(x[2]) # 根据索引,直接移除索引对应的元素 18 print(x) 19 20 # pop(),移除列表尾部最后一个元素 21 x.pop() 22 print(x) 23 24 # 列表引用 25 print(x[0:5]) # 相当于一个范围,从左边索引到右边索引,但是不包括右边索引 26 27 # -1 索引代表最后一个元素,-2代表倒数第二个 28 # 此时x= [5, 6, 1, 6, 7, 2, 7, 9] 29 print(x[-1]) 30 print(x[-2]) 31 32 # 查找某一个元素的索引值,一下1的索引应该是2 33 print(x.index(1)) 34 35 # 计算某一个元素出现的次数 36 print(x.count(6)) # 元素6出现了2次 37 38 # 排序,默认从小到大 39 x.sort() 40 print(x) 41 42 # 字母排序 43 y = ['Janet', 'Jessy', 'Anthony', 'Tom', 'Alice', 'Bob'] 44 y.sort() 45 print(y) # 注此处的y为重新排序的y,,y.sort()没有对应的返回值
多列表
1 # 多维列表 2 3 x = [[5, 6], [6, 7], [7, 2], [2, 5], [4, 9]] 4 5 6 # 根据索引引用列表元素,例如打印【6,7】 7 # print(x[1]) 8 # 打印【6,7】中的7 9 print(x[1][1]) 10 11 12 13 14 15 # 三维 16 y = [[[5, 7], [6, 6]], [[6, 6], [7, 8]], [7, 2], [2, 5]] 17 # 打印[[6,6],[7,8]]这个部分中的[6,6]里的第一个6 18 print(y[1][0][0]) 19 # y看起来有的晕,我们换一个写法 20 21 y = [ 22 [[5, 7], [6, 6]], 23 [[6, 6], [7, 8]], 24 [7, 2], 25 [2, 5] 26 ] 27 # 这样稍微清晰,一点,Y有4个元素,前面两个是两两二维组成,后面两个是单独的二维
二、tuple(元组) 用小括号()
元祖也是一种有序列表,和list非常类似,不同点是tuple一旦定义了就不可修改,在一定意义上这也提高了代码的安全性,查询方法和list一样,使用的时候能用tuple的就用tuple。
在定义只有一个元素的元祖时加入"逗号"以免产生和数学运算的歧义
可变的tuple
当元祖内部放一个列表的时候,这个元祖中的列表的值就可以变化了,实际上tuple并没有改变,变的是内部list的值
元组与列表类似,关于元组同样需要做如下三点:
A.概念
1.元组通过英文状态下的圆括号构成“()”.其存放元素与列表一样,可以是不同的数值类型,也可以是不同的数据结构。
2.元组仍然是一种序列,所以几种获取列表元素的索引方法同样可以使用到元组对象中。
3.与列表最大的区别是,元组不再是一种可变类型的数据结构
B.由于元组只是存储数据的不可变容器,因此其只有两种可用的“方法”,分别是count和index。
例如:
t=('a','b','z','a','d','c','a')
print(t.count('a') #记录'a'的个数
print(t.index('c')) #记录'c'的位置
1 country = ('bj',['sh','gd']) 2 print(country[1]) 3 print(country[1][0]) 4 country[1][0] ="nihao" 5 print(country[1][0])
三、字典
Dictionary (字典) : 用{}来定义
Dict={'name':'Pei', 'age':'26'}
1 # 字典 2 3 # 我们随便设计几个城市的明天的最高温度 4 tem ={'北京':22,'上海':23,'深圳':24,'广州':25,'南京':26} 5 6 print(tem) 7 8 # 打印广州最高温度 9 print(tem['广州']) 10 11 # 字典中添加一个元素 12 tem['重庆'] = 28 13 print(tem) 14 15 # 删除上海 16 del tem['上海'] 17 print(tem) 18 19 # 更新某一个值 20 tem['北京'] = 28 21 print(tem)
# 字典 # 字典里嵌套列表 tem = {'北京': [22, '多云'], '上海': [23, '晴天'], '深圳': [23, '小雨'], '广州': [23, '阴天']} print(tem) # 打印北京天气整体情况 print(tem['北京']) # 打印北京最高温度 print(tem['北京'][0])