列表和元组的区别:
''' 1.列表是动态数组,它们可变且可以重设长度(改变其内部元素的个数)。
2.元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。
3.元组缓存于Python运行时环境,这意味着我们每次使用元组时无须访问内核去分配内存。'''
tup1 = (1, 2, 3)
print(type(tup1)) # <class 'tuple'>
"""
元组不能修改
"""
======================================================================================================================
元组
tup2 = (1,) # 元组中只有一个元素的时候必须要加个,
print(type(tup2))
a,b = (1,2) # 元组拆包,必须要一一对应不能有多余的,对列表也适用。例啊,a,b = (1,2,3)
print(a,b)
tup3 = (1, 2, 3)
tup4 = (4, 5, 6)
print(tup3 + tup4)
======================================================================================================================
列表
*增
1,append() 添加到末尾
lis1 = [45, 78, '北京', '上海', '广州']
lis1.append('天津')
print(lis1) # [45, 78, '北京', '上海', '广州', '天津']
2,extend() 展开元素添加到末尾(两个列表)--迭代追加
lis2 = ['狗子', '老鼠']
lis1.extend(lis2)
print(lis1) # [45, 78, '北京', '上海', '广州', '狗子', '老鼠']
3,insert() 插队添加,利用索引值
lis1.insert(2, 56)
print(lis1) # [45, 78, 56, '北京', '上海', '广州']
4,+ 加法原理直接相加
lis3 = lis1 + lis2
print(lis3) # [45, 78, '北京', '上海', '广州', '狗子', '老鼠']
======================================================================================================================
*删
pop() 指定下标删除
lis1.pop(1)
print(lis1.pop(1)) # 78 打印出被删除的元素
print(lis1) # [45, '北京', '上海', '广州']
remove() 指定元素删除
lis1.remove(78)
print(lis1) # [45, '北京', '上海', '广州']
clear() # 清除列表中的所有元素
lis1.clear()
print(lis1) #[]变成一个空列表
del() # 直接删除这个列表,可也按照索引删除,可以切片删除
======================================================================================================================
*改
通过赋值法直接修改
lis1[1] = 100
print(lis1) # [45, 100, '北京', '上海', '广州']
======================================================================================================================
*查index() /index(元素,范围开始,范围结束)查找元素,输出下标
print(lis1.index(78)) # 1
======================================================================================================================
*排序
1,reverse() 倒置
lis3 = [45, 23, 21, 87, 100, 59]
lis3.reverse()
print(lis3) # [59, 100, 87, 21, 23, 45]
2,sort() 从小到大排序
lis3.sort()
print(lis3) # [21, 23, 45, 59, 87, 100]
reverse和sort联用实现从大到小排列(sort先从小到大排列,然后reverse倒置)
lis3.sort(reverse=True)
print(lis3) # [100, 87, 59, 45, 23, 21]
======================================================================================================================
列表的取值
city_list = ['北京', '上海', '深圳', '长沙']
print(city_list[3])
print(city_list[-1])
列表的最值
lst = [1,2,3,4,5,6]
print(min(lst)) # 求最小值
print(max(lst)) # 求最大值
======================================================================================================================
连续删除
删除索引为奇数的元素
l1 = [11, 22, 33, 44, 55]
1,直接删除
del l1[1::2]
print(l1)
2,倒序删除元素
l1 = [11, 22, 33, 44, 55]
for index in range(len(l1)-1, -1, -1): # 将索引值倒序,从后往前删除前面的元素索引值不变
if index % 2 == 1:
l1.pop(index)
print(l1)
循环一个列表,实际上是按照索引循环
a = [2, 4, 5, 6, 7]
for var in a:
if var % 2 == 0:
a.remove(var)
print(a) # [4, 5, 7]
======================================================================================================================
3,思维置换
l1 = [11, 22, 33, 44, 55]
new_l1 = []
for index in range(len(l1)):
if index % 2 == 0:
new_l1.append(l1[index])
l1 = new_l1
print(l1)
======================================================================================================================
**循环一个列表时最好不要改变列表的大小,这样会另想最终的结果。
存储空间的指向
v1 = [1, 2, 3, 4, 5]
v2 = [v1, v1, v1]
v1.append(6)
print(v1) # [1, 2, 3, 4, 5, 6]
print(v2) # [[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]]
v1 = [1, 2, 3, 4, 5]
v2 = [v1, v1, v1]
v2[1][0] = 111
v2[2][0] = 222
print(v1) # [222, 2, 3, 4, 5]
print(v2) # [[222, 2, 3, 4, 5], [222, 2, 3, 4, 5], [222, 2, 3, 4, 5]]
****(重要)
v1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
v2 = {}
for item in v1:
if item < 6:
continue
if 'k1' in v2:
v2['k1'].append(item)
else:
v2['k1'] = [item]
print(v2)
lis = ['周老二', '周星星', '麻花藤', '周扒皮']
for i in range(len(lis) - 1, -1, -1):
if lis[i].strip()[0] == '周':
lis.pop(i)
print(lis)
print(lis[i])
车牌区域划分
cars = ['鲁A32444', '鲁B1233', '京B8989M', '黑C46752', '沪B25041', '鄂A88888']
locals = {'沪': '上海', '黑': '黑龙江', '鲁': '山东', '鄂': '湖北', '京': '北京'}
'''
思路:
1,结果为{'黑龙江':'1','山东':'2','北京':'1','湖北':'1','上海':'1'}
2,循环遍历主体:cars
3,在循环中给字典添加键值对
4,没有键,就创建一个键,有就加一
'''