分享

Python语言学习之列表、元祖、字典那些事:python和列表、元祖、字典的使用方法之详细攻略

 Four兄 2019-08-24

Python语言学习之列表、元祖、字典那些事:python和列表、元祖、字典的使用方法之详细攻略

目录

列表、元祖、字典那些事

0、创建空列表

1、列表统计、循环、代替

2、创建多个空列表的方法及其应用范围

3、Python查找列表中的重复元素那些事

4、利用for循环依次输出的单条信息存在一个列表内

5、对字典进行排序


列表、元祖、字典那些事

0、创建空列表

  1. citys_list=[[]]*len(dup_list) #出了很多错误,append不能向列表内列表添加元素
  2. citys_tuple=(tuple(citys_list)) #输出([], [], [], [])但是不同于直接创建元祖citys_tuple=([],[],[],[])

 

1、列表统计、循环、代替

  1. #对列表内元素各统计个数,并生成字典,然后分别取出keys、values各组成列表
  2. list=['America', 'America', '山东', '山东', '吉林', '山东', '上海', '上海']
  3. print(list.count('山东')) #计算列表指定元素的个数
  4. #计算列表每个元素的个数并生成字典
  5. list_dict = {}
  6. for i in list:
  7. if list.count(i) >= 0:
  8. list_dict[i] = list.count(i)
  9. print(list_dict)
  10. keys=list_dict.keys()
  11. print(keys) #但是,输出的是dict_keys(['America', '山东', '吉林', '上海'])
  12. #for循环遍历字典分别取出keys、values各组成列表
  13. Keys=[]
  14. Values=[]
  15. for key in list_dict.keys(): #for循环遍历字典的keys、values
  16. print(key)
  17. Keys.append(key)
  18. for value in list_dict.values():
  19. print(value)
  20. Values.append(value)
  21. print(Keys)
  22. print(Values)
  23. #列表里的元素进行替换,使用列表解析的方法
  24. #替换列表中的某个元素,输出新列表只能替换一次,不能for循环替换,因为x不是个循环的变量
  25. lst = ['1', '2', '3']
  26. newlst = ['4' if x == '1' else x for x in lst]

2、创建多个空列表的方法及其应用范围

  1. #创建多个空列表的方法及其应用范围
  2. lists01=([],[],[],[]) ##T1、此为创建已知个数的空列表,同时满足向大列表中元素小列表添加元素时,不保证同步。
  3. lists02=[[]]*4 ##T2、魔法乘法不合适,如list1=[[]]*n,这种方式不能满足append的方法
  4. #T3、真正意义上的创建空列表
  5. def create_empty_lists(num):
  6. lists= []
  7. for i in range(num):
  8. lists.append([])
  9. return lists
  10. lists =create_empty_lists(5)
  11. print(lists)

3、Python查找列表中的重复元素那些事

(1)、实现查找列表中重复元素

  1. #1、实现查找列表中重复元素
  2. dict2list=['汕头', '杭州', '周口', '广元', '佛山', '佛山', '上海', '宁波', '东莞', '台州', '仙桃', '阳泉', '安庆', '泉州', '黄冈', '宿迁', '黄冈', '常州', '杭州', '潮州', '东阳', '淮安', '重庆', '廊坊', '威海', '黄石', '北京', '成都', '保定', '上海', '佛山', '绍兴']
  3. #T1、对列表中是重复的元素,就输出
  4. for i in dict2list:
  5. if dict2list.count(i)>=2:
  6. print('该元素%s重复'%i)
  1. #T2 查找重复的元素
  2. list1=dict2list
  3. list2=list1.copy() #为了不破坏原数据,临时浅复制给变量list2
  4. list3=list(set(list2)) #使用set()函数将list2转为集合去掉重复元素又用list()转回列表
  5. for i in list3: #对无重复元素的列表list3迭代
  6. if i in list2:
  7. list1.remove(i) #当list3内的元素存在于list2中,则把其元素从list2中删除,最后就会留下重复元素
  8. print('list1:%s中的重复元素有:%s'%(list1,list2)) #组后输出原数据list1和最终结果list2
  9. list1:['佛山', '黄冈', '杭州', '上海', '佛山']中的重复元素有:['汕头', '杭州', '周口', '广元', '佛山', '佛山', '上海', '宁波', '东莞', '台州', '仙桃', '阳泉', '安庆', '泉州', '黄冈', '宿迁', '黄冈', '常州', '杭州', '潮州', '东阳', '淮安', '重庆', '廊坊', '威海', '黄石', '北京', '成都', '保定', '上海', '佛山', '绍兴']

(2)、查找列表内每个元素、每个元素对应重复次数

  1. #T3、查找列表内每个元素、每个元素对应重复次数
  2. a = dict2list
  3. b = set(a)
  4. for each_b in b:
  5. count = 0
  6. for each_a in a:
  7. if each_b == each_a:
  8. count += 1
  9. print(each_b, ': ', count)
  10. 潮州 : 1
  11. 佛山 : 3
  12. ……
  13. 保定 : 1
  14. 杭州 : 2
  15. 东阳 : 1
  16. ……
  17. 台州 : 1
  18. 宁波 : 1
  19. 黄冈 : 2
  20. 广元 : 1
  21. ……

(3)、查找重复元素并输出重复的元素的索引值

  1. #T4、查找重复元素并输出重复的元素的索引值
  2. a = dict2list
  3. source = a
  4. from collections import defaultdict
  5. def list_duplicates(seq):
  6. tally = defaultdict(list)
  7. for i,item in enumerate(seq):
  8. tally[item].append(i)
  9. return ( (key,locs) for key,locs in tally.items()
  10. if len(locs)>1 )
  11. for dup in sorted(list_duplicates(source)):
  12. print(dup)
  13. ('上海', [6, 29])
  14. ('佛山', [4, 5, 30])
  15. ('杭州', [1, 18])
  16. ('黄冈', [14, 16])

(4)、比较并输出两个列表中的相同元素和不同元素

  1. list1 = ['笔记本电脑 ', '手提包 ', '人类 ', '人类 ']
  2. list2 = ['笔记本电脑 ', '手机','手提包 ', '人类 ', '人类 ']
  3. same_element = [x for x in list1 if x in list2]
  4. different_element = [y for y in (list1+list2) if y not in same_element]
  5. print(same_element)
  6. print(different_element)
  7. ['笔记本电脑 ', '手提包 ', '人类 ', '人类 ']
  8. ['手机']

4、利用for循环依次输出的单条信息存在一个列表内

  1. import os #将for循环依次输出的单条信息存在一个列表内
  2. path ='F:\\File_Python\\Python_example\\faceRecognition-master\\Original_picture\\Jason_niu'
  3. for fpathe,dirs,fs in os.walk(path):
  4. list=[]
  5. for f in fs:
  6. x=os.path.join(fpathe,f)
  7. list.append(x)
  8. print(list)

5、对字典进行排序

  1. #字典排序:将两个列表组成字典内的keys、values进行排序
  2. x = ['LiR', 'RFR', 'ETR', 'SGDR', 'GBR', 'LGB']
  3. model_score = [0.6, 0.7, 0.4, 0.8, 0.1, 0.5]
  4. accuracy_dict = dict(zip(x,model_score))
  5. dict_sort_by_key=sorted(accuracy_dict.items()) #按照key排序
  6. print(dict_sort_by_key)
  7. dict_sort_by_value=sorted(accuracy_dict.items(),key=lambda x: x[1],reverse=False) #按照value排序
  8. print(dict_sort_by_value)
  9. dict_sort_by_value_keys = dict(dict_sort_by_value).keys()
  10. dict_sort_by_value_values = dict(dict_sort_by_value).values()
  11. print(list(dict_sort_by_value_keys) )
  12. print(list(dict_sort_by_value_values) )
  13. [('ETR', 0.4), ('GBR', 0.1), ('LGB', 0.5), ('LiR', 0.6), ('RFR', 0.7), ('SGDR', 0.8)]
  14. [('GBR', 0.1), ('ETR', 0.4), ('LGB', 0.5), ('LiR', 0.6), ('RFR', 0.7), ('SGDR', 0.8)]
  15. ['GBR', 'ETR', 'LGB', 'LiR', 'RFR', 'SGDR']
  16. [0.1, 0.4, 0.5, 0.6, 0.7, 0.8]

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多