python中列表和字典的使用
列表
1.列表的创建
使用range(范围起点,范围终点,步长)
例如:list = list(range(1,20,2))
2.列表的查找
使用index(数据)方法
例如:
list1 = ['daqiu', 20, 'erqiu', 10, 'daqiu']
print(list1.index('sanqiu'))
结果:
0
注意:如果查不到,报错! 查到则返回所在下标!
3.列表的数据增加
使用insert( ),append( ),extend( )方法
①.insert()方法
list1.insert (下标,数据)
例如:list1.insert(2, 'xiaoqiu')
②.append()方法
list1.append(数据/列表)
例如:list1.append('sanqiu') list1.append([100, 200, 300])
③.extend()方法
list1.extend(数据/列表),将数据或列表拆开插入目标列表
例如:
list1 = ['daqiu', 20, 'erqiu', 10]
list1.extend('sanqiu')list1.extend([10, 100, 1000])
结果:
['daqiu', 20, 'erqiu', 10] ['daqiu', 20, 'erqiu', 10, 's', 'a', 'n', 'q', 'i', 'u', 10, 100, 1000]
4.数据删除
使用remove(),del/del(),clear(),pop()方法
①remove()方法
功能:删除指定数据
例如:
list1.remove('daqiu')
②pop()方法
功能:如果参数位置写了下标表示的是删除指定下标的数据;如果不指定下标从结尾删除 pop()都会有一个返回值,表示的就是删除的这个数据
例如:
list1 = ['daqiu', 20, 'erqiu', 10, 'daqiu']
num = list1.pop(1) list1.pop() print(list1) print(num)
结果:['daqiu', 'erqiu', 10]
20
③clear()方法
功能:清空列表。例如:
list1.clear()
④del/del()方法
功能:删除列表
例如:
del list1del(list1)
5.数据修改
使用index()查找,然后根据下表直接修改
例如:
list1[0] = 'xiaoqiu' # 直接修改 print(list1) num = list1.index('erqiu') # 匹配后修改 list1[num] = 'sanqiu' print(list1)
补充:排序,拷贝,嵌套,推导式,常用技巧
1.排序
方法:sort(),sorted()
sort()默认正向,若要反向,加参数reverse=true
sorted( )是python自带函数,用法:sorted(列表名),需要赋值给另一个变量
才能使用。
例如:
newList = sorted(list1) print(newList)
2.拷贝
分为深拷贝和浅拷贝
①浅拷贝:一般通过赋值进行拷贝,一改都改。
例如:
list2 = list1print(list1)print(list2)list2.append(10)print(list2)print(list1)list1.remove(2)print(list1)print(list2)
无论改哪个列表,两个列表都发生改变。
②深拷贝
通过copy()方法进行拷贝,语法:list2 = list1.copy()
此时无论改哪个,另一个不变。
3.列表嵌套
顾名思义,就是在一个列表中再定义列表
例如:[[1,2],[3,4],[5,6]]
用法类似于循环语句,根据下标进行数据的增删改查
# 一个学校,有3个办公室(列表),现在有8位老师(列表)等待工位的分配,请编写程序,完成随机的分配import random# random.randint(0,2)# 老师名字的列表names = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']# 办公室的列表offices = [[],[],[]]# 随机分配办公室 -- 遍历整个names,如果名字在names里面,放到列表(子列表)中去(追加数据到列表)for name in names: # 随机的列表.append(name) num = random.randint(0, 2) offices[num].append(name)# print(offices[0])# 打印信息: 办公室1的人数是4, 名字1 名字2i = 1 # 办公室编号for suboffice in offices: print('办公室%d的人数是%d' % (i, len(suboffice))) i += 1 # suboffice = ['a', 'c'] for name in suboffice: print(name, end=' ') print()
4.列表推导式
作用:用一个表达式去生成 一个有规律的列表 或 控制一个有规律的列表
相当于把条件后置,显示变量放在前边进行输出。一般条件是for循环,条件逻辑是一级一级嵌套的
生成规律列表的例子:
list6 = [i for i in range(0, 21) if i % 2 == 0]
控制列表内容的例子:
list8 = [i for i in mylist if len(str(i)) >= 3]
5.列表常用技巧
①合并
list3 = list1 + list2 //通过加法进行列表合并
print(list3)
list1.extend(list2) //通过extend()方法进行列表合并
print(list1)
list1 += list2 //通过加法进行列表合并
print(list1)
list3 = ['hello']
list4 = list3 * 4 //通过乘法进行相同数据的成倍输出
print(list4)
print(list3)
list1.extend(list2) //通过extend()方法进行列表合并
print(list1)
list1 += list2 //通过加法进行列表合并
print(list1)
list3 = ['hello']
list4 = list3 * 4 //通过乘法进行相同数据的成倍输出
print(list4)
②字符串和列表的相互转换
字符串转换成列表:split()方法
str1 = 'hello world my python' list5 = str1.split(' ')
列表转换成字符串:join()方法。格式:'分割符号'.join(列表)
str2 = '...'.join(list5) print(str2)
③判断数据是否是想要类型
函数isinstance(数据, 指定的数据类型)
if isinstance(ss, int):
④enumerate()方法
enumerate() : 返回一个列表,里面包含下标和数据的对应的元组(即列表中内容是一个个元组)
通过变量key,value可以进行列表中元组下标以及内容的输出
list3 = ['aa', 'bb', 'cc'] for i in enumerate(list3): print(i)
for key, value in enumerate(list3): print(key) print(value)
此过程也叫拆包,用于取数据和控制数据!
字典
1.字典的创建
字典不支持下标以及排序功能,所以它是无序的
错误用法:
dict1 = {'name': 'python', 'age': 28}print(dict1[0])
正确用法:
print(dict1['name'])
①空字典的创建:
dict1 = { }
dict2 = dict.()
②有内容字典的创建:
dict3 = dict(字典各项)
dict4 = dict(name='gui', age=30)
dict4 = dict([('name', 'laowang'),('weizhi', 'gebide')])//注意语法格式
③fromkeys() 方法-- 创建键值对的值都是相同的形式的列表 要求第一个参数必须是列表,用来书写键名
fromkeys([键], 键值对的值)
dict5 = dict5.fromkeys(['aa', 'bb'], 10)
2.字典查找,修改,增加
dict1 = {'name': 'python', 'age': 28} # 通过键名查找数据,如果有这个键,返回对应的值;没有这个键则报错 #通过键名查找数据 如果等号赋值的话,如果有这个键则修改值;没有这个键,则新增这个键值对 dict1['name'] = 'gui' print(dict1) print(dict1['id']) dict1['id'] = 100 print(dict1) # get():通过键名查找数据;如果有这个键则返回对应的值;没有这个键返回的默认是None # 如果设置了第二个参数,没有这个键的时候返回第二个参数(作用:给自己一个提示信息) # print(dict1.get('name')) # print(dict1.get('id', 'hello')) # print(dict1) # setdefault():通过键名查找数据,如果有这个键则返回对应的值;没有这个键返回的默认是None, # 同时 默认增加一个键值对 - 键:None;如果设置了第二个参数,新增的键值对就是:键:第二个参数 # print(dict1.setdefault('id', 'hello')) # print(dict1) # update() dict2 = {'name': 'laowang', 'sex': 'man'} dict1.update(dict2) # 用2 更新了1:既能修改又能新增 print(dict1) print(dict2)
3.字典拷贝
浅拷贝,深拷贝,超深拷贝
①对于单个键值对应项:
浅拷贝:通过赋值
dict2 = dict1
深拷贝:copy()方法
dict2 = dict1.copy()
②对于一键多项,此时深拷贝结果同浅拷贝一样
dict100 = copy.deepcopy(dict10)
deepcopy()适用于多项数据的内容修改,此时能保证原数据不被修改。