Python语言学习之列表、元祖、字典那些事:python和列表、元祖、字典的使用方法之详细攻略 目录 列表、元祖、字典那些事 0、创建空列表 1、列表统计、循环、代替 2、创建多个空列表的方法及其应用范围 3、Python查找列表中的重复元素那些事 4、利用for循环依次输出的单条信息存在一个列表内 5、对字典进行排序
列表、元祖、字典那些事0、创建空列表citys_list=[[]]*len(dup_list) #出了很多错误,append不能向列表内列表添加元素 citys_tuple=(tuple(citys_list)) #输出([], [], [], [])但是不同于直接创建元祖citys_tuple=([],[],[],[])
1、列表统计、循环、代替#对列表内元素各统计个数,并生成字典,然后分别取出keys、values各组成列表 list=['America', 'America', '山东', '山东', '吉林', '山东', '上海', '上海'] print(list.count('山东')) #计算列表指定元素的个数 list_dict[i] = list.count(i) print(keys) #但是,输出的是dict_keys(['America', '山东', '吉林', '上海']) #for循环遍历字典分别取出keys、values各组成列表 for key in list_dict.keys(): #for循环遍历字典的keys、values for value in list_dict.values(): #替换列表中的某个元素,输出新列表只能替换一次,不能for循环替换,因为x不是个循环的变量 newlst = ['4' if x == '1' else x for x in lst]
2、创建多个空列表的方法及其应用范围lists01=([],[],[],[]) ##T1、此为创建已知个数的空列表,同时满足向大列表中元素小列表添加元素时,不保证同步。 lists02=[[]]*4 ##T2、魔法乘法不合适,如list1=[[]]*n,这种方式不能满足append的方法 def create_empty_lists(num): lists =create_empty_lists(5)
3、Python查找列表中的重复元素那些事(1)、实现查找列表中重复元素 dict2list=['汕头', '杭州', '周口', '广元', '佛山', '佛山', '上海', '宁波', '东莞', '台州', '仙桃', '阳泉', '安庆', '泉州', '黄冈', '宿迁', '黄冈', '常州', '杭州', '潮州', '东阳', '淮安', '重庆', '廊坊', '威海', '黄石', '北京', '成都', '保定', '上海', '佛山', '绍兴'] if dict2list.count(i)>=2:
list2=list1.copy() #为了不破坏原数据,临时浅复制给变量list2 list3=list(set(list2)) #使用set()函数将list2转为集合去掉重复元素又用list()转回列表 for i in list3: #对无重复元素的列表list3迭代 list1.remove(i) #当list3内的元素存在于list2中,则把其元素从list2中删除,最后就会留下重复元素 print('list1:%s中的重复元素有:%s'%(list1,list2)) #组后输出原数据list1和最终结果list2 list1:['佛山', '黄冈', '杭州', '上海', '佛山']中的重复元素有:['汕头', '杭州', '周口', '广元', '佛山', '佛山', '上海', '宁波', '东莞', '台州', '仙桃', '阳泉', '安庆', '泉州', '黄冈', '宿迁', '黄冈', '常州', '杭州', '潮州', '东阳', '淮安', '重庆', '廊坊', '威海', '黄石', '北京', '成都', '保定', '上海', '佛山', '绍兴']
(2)、查找列表内每个元素、每个元素对应重复次数 print(each_b, ': ', count)
(3)、查找重复元素并输出重复的元素的索引值 from collections import defaultdict def list_duplicates(seq): tally = defaultdict(list) for i,item in enumerate(seq): return ( (key,locs) for key,locs in tally.items() for dup in sorted(list_duplicates(source)):
(4)、比较并输出两个列表中的相同元素和不同元素 list1 = ['笔记本电脑 ', '手提包 ', '人类 ', '人类 '] list2 = ['笔记本电脑 ', '手机','手提包 ', '人类 ', '人类 '] same_element = [x for x in list1 if x in list2] different_element = [y for y in (list1+list2) if y not in same_element] ['笔记本电脑 ', '手提包 ', '人类 ', '人类 ']
4、利用for循环依次输出的单条信息存在一个列表内import os #将for循环依次输出的单条信息存在一个列表内 path ='F:\\File_Python\\Python_example\\faceRecognition-master\\Original_picture\\Jason_niu' for fpathe,dirs,fs in os.walk(path):

5、对字典进行排序#字典排序:将两个列表组成字典内的keys、values进行排序 x = ['LiR', 'RFR', 'ETR', 'SGDR', 'GBR', 'LGB'] model_score = [0.6, 0.7, 0.4, 0.8, 0.1, 0.5] accuracy_dict = dict(zip(x,model_score)) dict_sort_by_key=sorted(accuracy_dict.items()) #按照key排序 dict_sort_by_value=sorted(accuracy_dict.items(),key=lambda x: x[1],reverse=False) #按照value排序 print(dict_sort_by_value) dict_sort_by_value_keys = dict(dict_sort_by_value).keys() dict_sort_by_value_values = dict(dict_sort_by_value).values() print(list(dict_sort_by_value_keys) ) print(list(dict_sort_by_value_values) ) [('ETR', 0.4), ('GBR', 0.1), ('LGB', 0.5), ('LiR', 0.6), ('RFR', 0.7), ('SGDR', 0.8)] [('GBR', 0.1), ('ETR', 0.4), ('LGB', 0.5), ('LiR', 0.6), ('RFR', 0.7), ('SGDR', 0.8)] ['GBR', 'ETR', 'LGB', 'LiR', 'RFR', 'SGDR'] [0.1, 0.4, 0.5, 0.6, 0.7, 0.8]
|