Python中最为常用的数据容器有列表、元组和字典。是使用Python必须掌握的基础。本文详细介绍列表、元组和字典,以及字典的两种(按照key排序和按照value排序)排序方法。
一、列表
1.创建
list1 = [1,2,3,4,5,6]
list2 = ['a','b','c','d','e']
list3 = [1,'2',[3,"a"],(5,6)]
特殊的创建方法:
li = [x for x in range(5)] #[0, 1, 2, 3, 4]
li = [(x, x * 2) for x in range(5)] #[(0, 0), (1, 2), (2, 4), (3, 6), (4, 8)]
li = [x for x in range(5) if (x % 2) == 0] #[0, 2, 4]
2.访问
list1[1] #2
list3[-1] #(5,6)
3.切片
list1[::2] #[1, 3, 5]
list3[2:-1] #[[3, 'a']]
list3[2][1] #'a'
4.修改
list1[0] = 0 #[0, 2, 3, 4, 5, 6]
list2[2] = ["b"] #['a', 'b', ['b'], 'd', 'e']
list3[0:2] = [1.1,'2.2'] #[1.1, '2.2', [3, 'a'], (5, 6)]
5.删除
list1 = [1,2,3,4,5,6]
del list1[0] #[2, 3, 4, 5, 6]
del list1[1:2] #[1, 4, 5, 6]
list1[1:2] = [] #[1, 4, 5, 6]
6.操作符('+', '*' , in, not in)
list1 = [1,2,3,4,5,6]
list2 = ['a','b','c','d','e']
li = list1 + list2 #[1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'd', 'e']
li = list1 * 2 #[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
5 in list1 #True
8 not in list1 #True
7.函数方法
li = [0,1,2,3,3,5]
#列表长度
len(li) #6
#列表最大值
max(li) #5
#列表最小值
min(li) #0
#在末尾增加元素
li.append(6) #[0, 1, 2, 3, 3, 5, 6]
#元素出现的次数
li.count(3) #2
#返回元素第一次出现的索引
li.index(3) #3 (没有该元素会跑出异常)
#在index为7的位置插入元素9
li.insert(7,9) #[0, 1, 2, 3, 3, 5, 9]
#删除index位置的元素
li.pop(4) #[0, 1, 2, 3, 5]
#移除指定元素的第一个值
li.remove(3) #[0, 1, 2, 3, 5]
#翻转列表
li.reverse() #[5, 3, 3, 2, 1, 0]
#排序
li.sort(reverse=False) #[0,1,2,3,3,5]
#清空列表
li.clear()
del li[:]
li = []
二、元组
1.创建
元组的元素可以直接赋值给多个变量,但变量数必须与元素数量一致。Python中函数Function是可以返回多个值的,这时返回的就是元组类型。
a, b, c = (1, 2, 3)
d = ('a', 'b', 'c')
print(a) #1
print(b) #2
print(c) #3
print(d) ('a', 'b', 'c')
2.访问
d = ('a', 'b', 'c')
d[1] #'a'
d[1:3] #('b', 'c')
3.操作符
a = (1, 2, 3)
d = ('a', 'b', 'c')
a + d #(1, 2, 3, 'a', 'b', 'c')
d * 2 #('a', 'b', 'c', 'a', 'b', 'c')
4.元组不可以修改、删除元素
三、字典
1.创建
d = {key1 : value1, key2 : value2 }
特殊创建方法:
{x: x**2 for x in (2, 4, 6)} #{2: 4, 4: 16, 6: 36}
2.访问
dic = {'a': 1, 'b': [1, 2, 3], 'c':{1:2}}
dic['b'][2] #3
dic['a'] #1
dic['b'] #[1, 2, 3]
dic['c'][1] #2
3.修改
dic = {'a': 1, 'b': [1, 2, 3]}
dic['b'][1] = 0 #{'a': 1, 'b': [1, 0, 3]}
4.删除
dic = {'a': 1, 'b': [1, 2, 3]}
#删除元素
del dic['a'] #{'b': [1, 2, 3]}
#删除字典
del dic
5.函数方法
dic = {'a': 1, 'b': 2, 'c':3}
len(dic) #3
str(dic) #"{'a': 1, 'b': 2, 'c': 3}"
'a' in dic #True
dic.get('a') #1
dic.items() #dict_items([('a', 1), ('b', 1), ('c', 3)])
dic.keys() #dict_keys(['a', 'b', 'c'])
dic.values() #dict_values([1, 1, 3])
dic.update({'a':0}) #{'a': 0, 'b': 2, 'c': 3}
dic.pop('b') #{'a': 0, 'c': 3}
6.字典排序
按key排序:
dic = {'a': 2, 'c': 3, 'b':1}
sorted(dic.items(), key=lambda d: d[0])
#输出:
[('a', 2), ('b', 1), ('c', 3)]
按value排序:
dic = {'a': 2, 'c': 3, 'b':1}
sorted(dic.items(), key=lambda d: d[1])
#输出:
[('b', 1), ('a', 2), ('c', 3)]
总结:
-
列表是一种无序的、可重复的数据序列,可以随时添加、删除其中的元素。
-
列表使用方括号创建,使用逗号分隔元素
-
列表元素值可以是任意类型,包括变量
-
元组与列表类似,不同之处在于元组的元素不能修改
-
元组使用小括号,列表使用方括号
-
没有 append(),insert() 这样进行修改的方法,其他方法都与列表一样
-
字典是另一种可变容器模型,可存储任意类型对象
-
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中
-
键必须是唯一的,但值则不必,值可以是任意数据类型
-
如果用字典里没有的键访问数据,会报错
-
字典的元素没有顺序,不能通过下标引用元素,通过键来引用
-
字典内部存放的顺序和 key 放入的顺序是没有关系的