元组:

作用:存多个值,元组不可变,主要用来读

age=(11,22,33,44,55)

print(age[2])  #取出元组内的值

print(age[1:4])  #取出元组内的某些值

print(age.index(33))  #取出33的索引

print(age.count(33))  #取出值得数量

字典类型:

作用:存多个值,key-value存取,取值速度快。

定义:key必须是不可变类型,value可以是任意类型。

  1. #取出字典的值
  2. info={'name':'yangshuai','age':22,'sex':'male'}
  3. print(info('age'))

重要操作:

*.pop()  #删除字典内的某个值,括号内输入的是key的值

*.pop('sasadsad',None)  #当取出某个不存在的值得时候会报错,这样定义可以在取不存在的值得时候输出自定义的值。

*.get()  #取出字典内的值,括号内输入的是可以的值

*.get('sdasdasd',None)  #跟get同理

掌握的:

*.popitem()  #随机弹出一个key-value值

*.keys()    #输出字典的所有的key

*.values()  #取出字典所有的values

打印字典中的所有值:

定义一个字典dic,  for key.values in dic.items():  print(key,values)

*.clear()  #清空字典

*.formkeys()  #利用输入的内容快速创建一个字典:  

  dic=info.formkeys(['name','age','sex'],1111)  #注意这样传入的值,所有value都是一样的,只有key是不同的。

*.update()  #括号内放的是以字典,是将括号内字典的内容更新到旧的字典中,不存在的加入,存在的替换。

另外一种方式创建字典:

  print(dict([('name','yangshuai'),('age',18),('sex','male')]))

*.setdefault()小练习:

  #定义一个空字典,加一条用户的详细信息,各种参数加入

  1. d={}
  2. print(d)
  3. d['name']='yangshuai'
  4. d['age']=18
  5. d['sex']='male'
  6.  
  7. #d['hobby']=[] #多个可以不断变化,最好利用列表来表示
  8. #d['hobby'].append('play basketball')
  9. #d['hobby'].append('paly football')
  10. #当加入字典的一个key对应多个值的时候,需要先定义一个新空列表,一个个往里边加值,这样我们可以利用*.setdefault()这个参数,简写程序。
    d.setdefault('hobby',[]).append('paly basketball')
    d.setdefault('hobby',[]).append('paly football')
    print(d)

字典练习:

  有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

  

  1. a={'k1':[],'k2':[]}
  2. c=[11,22,33,44,55,66,77,88,99,90]
  3. for i in c:
  4. if i>66:
  5. a['k1'].append(i)
  6. else:
  7. a['k2'].append(i)
  8. print(a)

  统计s='hello alex alex say hello sb sb'中每个单词的个数,结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}

  1. s='hello alex alex say hello sb sb'
  2.  
  3. l=s.split()
  4. dic={}
  5. for item in l:
  6. if item in dic:
  7. dic[item]+=1
  8. else:
  9. dic[item]=1
  10. print(dic)

集合:

作用:去重,关系运算

集合内的可以有多个元素,但是每个元素都是不可变类型,即可hash类型。

集合内的元素唯一

定义:s={1,‘ss’,2,34,2,424}

优先掌握的用法:

判断某个值在不在集合中:  value in   字典

关系运算:  

  1. s1={1,10,11,22}
  2. s2={1,11,33}
    #求两个交集
    print(s1 & s2)
    #求两个并集
    print(s1 | s2)
    #求差集
    #只在s1内的,不在s2的
    print(s1-s2)
    #求不同时在s1和s2的,对称差集
    print(s1 ^ s2)
    #谁是谁的父集,s1 >= s2
    #谁是谁的子集,s1 <= s2
    s1={1,2,3,4}
    s2={1,2}
    print(s1 <= s2)
    print(s1 >= s2)

 去重小练习:

   1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序

   2.在上题的基础上,保存列表原来的顺序

   3.去除文件中重复的行,肯定要保持文件内容的顺序不变
   4.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序

  1. l=[
    {'name':'egon','age':18,'sex':'male'},
    {'name':'alex','age':73,'sex':'male'},
    {'name':'egon','age':20,'sex':'female'},
    {'name':'egon','age':18,'sex':'male'},
    {'name':'egon','age':18,'sex':'male'},
    ]
  1. #去重,无需保持原来的顺序
  2. l=['a','b',1,'a','a']
  3. print(set(l))
  4.  
  5. #去重,并保持原来的顺序
  6. #方法一:不用集合
  7. l=[1,'a','b',1,'a']
  8.  
  9. l1=[]
  10. for i in l:
  11. if i not in l1:
  12. l1.append(i)
  13. print(l1)
  14. #方法二:借助集合
  15. l1=[]
  16. s=set()
  17. for i in l:
  18. if i not in s:
  19. s.add(i)
  20. l1.append(i)
  21.  
  22. print(l1)
  23.  
  24. #同上方法二,去除文件中重复的行
  25. import os
  26. with open('db.txt','r',encoding='utf-8') as read_f,\
  27. open('.db.txt.swap','w',encoding='utf-8') as write_f:
  28. s=set()
  29. for line in read_f:
  30. if line not in s:
  31. s.add(line)
  32. write_f.write(line)
  33. os.remove('db.txt')
  34. os.rename('.db.txt.swap','db.txt')
  35.  
  36. #列表中元素为可变类型时,去重,并且保持原来顺序
  37. l=[
  38. {'name':'egon','age':18,'sex':'male'},
  39. {'name':'alex','age':73,'sex':'male'},
  40. {'name':'egon','age':20,'sex':'female'},
  41. {'name':'egon','age':18,'sex':'male'},
  42. {'name':'egon','age':18,'sex':'male'},
  43. ]
  44. # print(set(l)) #报错:unhashable type: 'dict'
  45. s=set()
  46. l1=[]
  47. for item in l:
  48. val=(item['name'],item['age'],item['sex'])
  49. if val not in s:
  50. s.add(val)
  51. l1.append(item)
  52.  
  53. print(l1)
  54.  
  55. #定义函数,既可以针对可以hash类型又可以针对不可hash类型
  56. def func(items,key=None):
  57. s=set()
  58. for item in items:
  59. val=item if key is None else key(item)
  60. if val not in s:
  61. s.add(val)
  62. yield item
  63.  
  64. print(list(func(l,key=lambda dic:(dic['name'],dic['age'],dic['sex']))))
    --摘自老男孩egon笔记

 集合内置方法:

定义集合A,集合B

  求交集:print(A.intersection(B))

  求并集:print(A.union(B))

  求差集:print(A.difference(B))

  求对称差集(去掉共同部分):print(A.symmetric_difference(B))

  A.add()  #向集合添加值

  A.pop()  #随机删除值

  A.remove()  #指定删除值

  A.discard()  #删除不存在的值可以不报错

  

数据类型总结:

按照存值个数区分:

  标量/原子类型:数字,字符串

  容器类型:列表,元组,字典

按照不可变区分:

  可变:字典,列表

  不可变:数字,字符串,元组

按访问顺序区分:

  访问方式:数字

  按照索引访问: 字符串,列表,元组

  按照映射访问:字典

  

  

Day2_元组_字典_集合_字符编码_文件处理的更多相关文章

  1. python学习道路(day3note)(元组,字典 ,集合,字符编码,文件操作)

    1.元组()元组跟列表一样,但是不能增删改,能查.元组又叫只读列表2个方法 一个 count 一个 index2.字典{}字典是通过key来寻找value因为这里功能比较多,所以写入了一个Code里面 ...

  2. Python-字典、集合、字符编码、文件操作整理-Day3

    1.字典 1.1.为什么有字典: 有个需求,存所有人的信息 这时候列表就不能轻易的表示完全names = ['stone','liang'] 1.2.元组: 定义符号()t = (1,2,3)tupl ...

  3. Python中列表、元组、字典、集合与字符串,相关函数,持续更新中……

    本篇博客为博主第一次学 Python 所做的笔记(希望读者能够少点浮躁,认真阅读,平心静气学习!) 补充: 列表.元组和字符串共同属性: 属于有序序列,其中的元素有严格的先后顺序 都支持双向索引,索引 ...

  4. Python黑帽编程2.3 字符串、列表、元组、字典和集合

    Python黑帽编程2.3  字符串.列表.元组.字典和集合 本节要介绍的是Python里面常用的几种数据结构.通常情况下,声明一个变量只保存一个值是远远不够的,我们需要将一组或多组数据进行存储.查询 ...

  5. python数据类型之元组、字典、集合

    python数据类型元组.字典.集合 元组 python的元组与列表类似,不同的是元组是不可变的数据类型.元组使用小括号,列表使用方括号.当元组里只有一个元素是必须要加逗号: >>> ...

  6. Python 学习笔记(1)Python容器:列表、元组、字典与集合

    Python容器:列表.元组.字典与集合 列表: 1.列表 的创建 使用[ ] 或者 list()创建列表:empty_list = [ ] 或者 empty_list= list() 使用list( ...

  7. python基础知识3——基本的数据类型2——列表,元组,字典,集合

    磨人的小妖精们啊!终于可以归置下自己的大脑啦,在这里我要把--整型,长整型,浮点型,字符串,列表,元组,字典,集合,这几个知识点特别多的东西,统一的捯饬捯饬,不然一直脑袋里面乱乱的. 一.列表 1.列 ...

  8. 菜鸟学IT之python3关于列表,元组,字典,集合浅认识!

    作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753 一.列表,元组,字典,集合分别如何增删改查及遍历. 列表 # 列表的 ...

  9. python学习Day6 元组、字典、集合set三类数据用法、深浅拷贝

    一.深浅拷贝 1.  值拷贝 ls1 = ls2  不开辟空间,指针跟着走.(直接将ls1中存放的地址拿过来,内存中不会开辟新的空间,所以你怎么变,我也跟着变.)(ls1内部的所有类型的值发生改变,l ...

  10. python_列表、元组、字典、集合对比

    列表.元组.字典.集合 列表.元组.字典.集合对比 比较项 列表 元组 字典 集合 类型名称 list tuple dict set 定界符 [] () {} {} 是否可变 是 否 是 是 是否有序 ...

随机推荐

  1. JQuery EasyUI combobox(下拉列表框)

     下拉列表框 继承 $.fn.combo.defaults. 重写 $.fn.combobox.defaults. 组合框显示一个可编辑的文本框和下拉列表,用户选择一个或多个值.用户可以直接输入文 ...

  2. python脚本程序,传入参数*要用单引号'*'

    *号作为python脚本的传入参数时,必须用单引号'',才能正确传入.如python test.py 2014 '*' age python test.py 2014 * age是错误的. 比如 te ...

  3. Gradle 1.12 翻译——第十八章. 日志

    有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...

  4. Dynamics CRM 2013 停用和激活按钮的显示与隐藏

    CRM中命令栏上的有些按钮是可以通过权限控制显示和隐藏的,比如新建.保存.保存并关闭.删除等,但惟独激活和停用无法控制,但我们还是可以用权限去控制,只是稍微绕了那么一下. 这里就要涉及到按钮的自定义了 ...

  5. 使用CocoaPods创建Pod

    本来想给App评分,好的开源组件没有Swift版,如是自己写了个简易的.想着既然写了,就写完善点,提供给需要的人使用.这样SwiftyiRate诞生了. 下面主要说下创建pod的步骤: 一.创建git ...

  6. UVa - 1618 - Weak Key

    Cheolsoo is a cryptographer in ICPC(International Cryptographic Program Company). Recently, Cheolsoo ...

  7. naoting

    生活就像一锅菠菜汤 20160714 夜

  8. 二叉树的最大深度算法面试题-leetcode学习之旅(3)

    标题 Maximum Depth of Binary Tree 描述 The maximum depth is the number of nodes along the longest path f ...

  9. Ubuntu_ROS中应用kinect v2笔记

    Ubuntu_ROS中应用kinect v2笔记 个人觉得最重要的资料如下: 1. Microsoft Kinect v2 Driver Released http://www.ros.org/new ...

  10. Logistic Regression求解classification问题

    classification问题和regression问题类似,区别在于y值是一个离散值,例如binary classification,y值只取0或1. 方法来自Andrew Ng的Machine ...