Python中的集合类型.

1.list_option.py

2.listsplit_option.py

3. dic_option.py

4.iter_option.py

1.list_option.py

  1. # coding=utf8
  2. __author__ = 'SummerChill'
  3. #list 有序的列表、元素可以是不同类型的,元素值可以重复
  4.  
  5. #list的初始化
  6. l=list()
  7. l=[]
  8. l=[1,2,3,'crxy',[1,2,3]]
  9. l=['a','b','c','d','b','b','e']
  10.  
  11. #增加元素
  12. #追加元素list的末尾
  13. l.append('new')
  14. #添加元素到指定的索引位置
  15. l.insert(2,'Two')
  16.  
  17. #删除元素
  18. #根据索引删除 如果索引缺省则会删除末尾的元素
  19. l.pop()
  20. l.pop(1)
  21. #根据value删除 只会删除第一个出现的value为'b'的元素
  22. l.remove('b')
  23.  
  24. #修改元素
  25. l[3]='Three'
  26.  
  27. #查询 如果index为整数表示索引,如果是负数表示取倒数第几个
  28. # print(l[2])
  29. # print(l[-2])
  30.  
  31. # 最终打印的结果
  32. # c
  33. # b
  34.  
  35. #tuple 元组 和list类似 只是一旦初始化在不能修改 只能查询和遍历
  36. #主要用作函数的返回值
  37. t=()
  38. t=tuple()
  39. t=(1,2,3,'a','b')
  40.  
  41. #t[1]='new' #NO!!!!!
  42. # TypeError: 'tuple' object does not support item assignment
  43.  
  44. # print(t[1])
  45. # print(t[-1])
  46.  
  47. #########字符串的操作返回一个副本
  48. data='str'
  49. result=data.upper()
  50. print(data,result)#('str', 'STR')
  51.  
  52. #########list的操作作用在list本身
  53. l=[1,2,3]
  54. result=l.append(4)
  55. print(l,result)#([1, 2, 3, 4], None)#返回None说明append没有返回值
  56. ###############################################
  57.  
  58. print(l)
  59. #拓展list 在list的尾部扩展增加新的集合
  60. l.extend(['as','s','a','b'])
  61. print(l)#[1, 2, 3, 4, 'as', 's', 'a', 'b']
  62.  
  63. #统计list中某个元素的出现的次数
  64.  
  65. #统计list中某个元素的出现的index 返回第一个匹配的元素的索引
  66.  
  67. #指定区间的查找 start stop 包含start 不包含stop
  68. #查不到报错不在list中。
  69. #print(l.index('a',2,5))#ValueError: 'a' is not in list
  70.  
  71. #反转 倒叙排列
  72. l.reverse()
  73. print(l)#['b', 'a', 's', 'as', 4, 3, 2, 1]
  74. l.sort()
  75. print(l)#[1, 2, 3, 4, 'a', 'as', 'b', 's']
  76.  
  77. #排序需求:按照元素的长度来排序
  78. #通过key指定的函数来查找要排序的依据。key_fun(item)
  79. #将key_fun(item)的返回值,传入 cmp_fun(x,y) 进行比较并排序。
  80. #cmp_fun(x,y)返回值决定了排序的位置。如果 cmp_fun(x1 ,x2) <0 x1排在x2的前面。
  81. l=['b','a','c','one','two','three','four']
  82. def key_fun(item):
  83. return len(item)
  84. #如果item是int类型的,是不能调用len()方法的.
  85. #TypeError: object of type 'int' has no len()
  86.  
  87. def cmp_fun(x,y):
  88. return x-y
  89.  
  90. #自定义排序
  91. l.sort(key=key_fun,cmp=cmp_fun)
  92. print(l)#['b', 'a', 'c', 'one', 'two', 'four', 'three']
  93.  
  94. #lamda表达式 起到了函数速写的功能,允许在代码内嵌入一个函数的定义。类似于匿名函数
  95. l.sort(key=lambda item:len(item),cmp=lambda x,y:x-y)
  96. print(l)#['b', 'a', 'c', 'one', 'two', 'four', 'three']
  97.  
  98. t=('a','b','c','a')
  99. #count value的出现次数
  100. print(t.count('a'))
  101. # 查找tuple中value的index 如果不存在则报错 ValueError: tuple.index(x): x not in tuple
  102. print(t.index('c'))

2.listsplit_option.py

  1. # coding=utf8
  2. __author__ = 'SummerChill'
  3.  
  4. #L[m:n]表示,从索引m开始取,直到索引n 但包含索引n;
  5. #L[m:n:p]表示:从索引m开始到索引n取数据,但包含索引n,每p个取一个。
  6.  
  7. l=['a','b','c','d','e','f','g']
  8.  
  9. #L[m:n]表示,从索引m开始取,直到索引n 但包含索引n;
  10. print(l[1:5])#['b', 'c', 'd', 'e']
  11. #L[m:n:p]表示:从索引m开始到索引n取数据,但包含索引n,每p个取一个。
  12. print(l[1:5:3])#['b', 'e']
  13.  
  14. # m n p 可以为负数
  15. #m、n为负数表示倒数第几个 前面包含后面不包含
  16. print(l[-5:-1])#['c', 'd', 'e', 'f']
  17. #p<0 从尾部向首部取元素
  18. print(l[5:1:-1])#['f', 'e', 'd', 'c']
  19.  
  20. print(l[-1:-4:-2])#['g', 'e']
  21.  
  22. #m n p 可以缺省
  23. #m不写从头开始取 n不写取到尾部 p不写默认为1
  24. print(l[::])#['a', 'b', 'c', 'd', 'e', 'f', 'g']
  25. print(l[:5:2])#['a', 'c', 'e']
  26. print(l[1::2])#['b', 'd', 'f']
  27. print(l[1:5])#['b', 'c', 'd', 'e']
  28. print(l[5:1])#[]

3. dic_option.py

  1. # coding=utf8
  2. __author__ = 'SummerChill'
  3.  
  4. #初始化字典
  5. dic=dict()
  6. dic={'a':'A','b':'B','c':'C'}
  7.  
  8. #增加和修改
  9. dic['c']='New'
  10. dic['d']='D'
  11. #删除指定的key
  12. dic.pop('b')
  13. print(dic)#{'a': 'A', 'c': 'New', 'd': 'D'}
  14.  
  15. #查询 dic['g'] 如果key不存在则会报错 dic.get(key,defaultvalue)
  16. #如果有默认值在key不存在的情况下会返回默认值
  17. #print(dic['g'])#报错 KeyError: 'g'
  18.  
  19. print(dic.get('g','defalut'))#defalut
  20. print(dic.get('a','defalut'))#A
  21. print(dic.get('g'))#None
  22.  
  23. #判断是否包含key
  24. print(dic.has_key('g'))#False
  25.  
  26. #list中的元素为tuple类型。
  27. print(dic.items())#[('a', 'A'), ('c', 'New'), ('d', 'D')]
  28. #list 其中的元素就是key或者value本身
  29. print(dic.keys())#['a', 'c', 'd']
  30. print(dic.values())#['A', 'New', 'D']
  31.  
  32. ##############set 元素不能重复 重复的会自动过滤
  33. s=set()
  34. s=set([1,2,3,4,1,2,3])
  35. print(s)#set([1, 2, 3, 4])
  36.  
  37. #增加元素
  38. s.add(6)
  39. #删除元素
  40. s.remove(2)
  41.  
  42. #print(s[1]) NO !!!!!!!!!!!!!
  43. # 'set' object does not support indexing
  44.  
  45. #想把2改为6 分两步
  46. # s.remove(2) s.add(6)
  47. print(s)#set([1, 3, 4, 6])
  48. #set 转为list
  49. l=list(s)
  50. print(l)#[1, 3, 4, 6]
  51. #list 转为set
  52. s=set(l)
  53. print(s)#set([1, 3, 4, 6])
  54.  
  55. #遍历set的元素
  56. for i in s:
  57. print(i)# 1 3 4 6
  58.  
  59. s.clear()

4.iter_option.py

  1. # coding=utf8
  2. __author__ = 'SummerChill'
  3.  
  4. sl=[1,2,3]
  5. sd={'a':'A','b':'B'}
  6.  
  7. #列表生成式 从一个或者多个集合中遍历得到元素然后再筛选计算得到一个新的list
  8. #for if
  9. #sl中元素分别平方组成新的元素
  10. l=[x*x for x in sl if x%2==0]
  11. print(l)#[4]
  12. l2=[x*x for x in sl]
  13. print(l2)#[1, 4, 9]
  14. #sd 里面的key和value组合成一个list。key value组合['a A','b B']
  15. l=[ k+' '+v for k,v in sd.items()]
  16. print(l)#['a A', 'b B']
  17. print(sd.items())#[('a', 'A'), ('b', 'B')]
  18.  
  19. #复合循环
  20. l=[x*y for x in sl for y in sl if x+y>=3]
  21. print(l)#[2, 3, 2, 4, 6, 3, 6, 9]
  22.  
  23. l=[x*x for x in [1,2,3,4,5,6]]
  24. print(l)#[1, 4, 9, 16, 25, 36]
  25.  
  26. ###列表生成器 并没有生成一个列表
  27. g=(x*x for x in [1,2,3,4,5,6])
  28. #用next(g) 读取生成器的元素 但是如果遍历到末尾再查询会报错
  29. #print(next(g))#1
  30. #print(next(g))#4
  31. #print(next(g))#9
  32. #print(next(g))#16
  33. #print(next(g))#25
  34. #print(next(g))#36
  35. #print(next(g))#到这个地方报错...g中的元素都找完了.
  36.  
  37. for i in g:
  38. print(i) # 1 4 9 16 25 36
  39.  
  40. l=[1,2,3]
  41. t=(1,2,3)
  42. d={'a':'A','b':'B'}
  43. s=set([1,2,3])
  44.  
  45. #默认的遍历
  46. #遍历元素本身
  47. for i in l:
  48. print(i)#1 2 3
  49. for i in t:
  50. print(i)#1 2 3
  51. for i in s:
  52. print(i)#1 2 3
  53. #对于字典 默认遍历的是key
  54. for i in d:
  55. print(i)#a b
  56.  
  57. for k,v in d.items():
  58. print(k,v)#('a', 'A') ('b', 'B')
  59. for k in d.keys():
  60. print(k)#a b
  61. for v in d.values():
  62. print(v)#A B
  63. ###############################
  64. #迭代
  65. #dict
  66. # d.iteritems()
  67. # d.iterkeys()
  68. # d.itervalues()
  69. for k ,v in d.iteritems():
  70. print(k,v)#('a', 'A') ('b', 'B')
  71. for k in d.iterkeys():
  72. print(k)#a b
  73. for v in d.itervalues():
  74. print(v)#A B
  75.  
  76. ##其他的集合:使用iter函数构造一个迭代器
  77. print(l)#[1, 2, 3]
  78. for i in iter(l):
  79. print(i)#1 2 3
  80.  
  81. print(t)#(1, 2, 3)
  82. for i in iter(t):
  83. print(i)#1 2 3
  84.  
  85. print(s)#set([1, 2, 3])
  86. for i in iter(s):
  87. print(i)#1 2 3
  88.  
  89. #遍历时候加上索引 通过enumerate
  90. print(l)#[1, 2, 3]
  91. for i,v in enumerate(l):
  92. print(i,v)#(0, 1) (1, 2) (2, 3)
  93.  
  94. print(t)#(1, 2, 3)
  95. for i,v in enumerate(t):
  96. print(i,v)#(0, 1) (1, 2) (2, 3)
  97.  
  98. print(s)#set([1, 2, 3])
  99. for i,v in enumerate(s):
  100. print(i,v)#(0, 1) (1, 2) (2, 3)
  101.  
  102. #dict 遍历的是key
  103. print(d)#{'a': 'A', 'b': 'B'}
  104. for i,k in enumerate(d):
  105. print(i,k,d.get(k))#(0, 'a', 'A') (1, 'b', 'B')
  106.  
  107. #for i in range(10)类似与for(int i=0;i<10;i++;)

python使用(二)的更多相关文章

  1. Python 基础 二

    Python 基础 二 今天对昨天学习的Python基础知识进行总结,学而不思则惘,思而不学则殆! 一.先对昨天学习的三大循环的使用情况进行总结: 1.while循环的本质就是让计算机在满足某一条件的 ...

  2. 初学Python(二)——数组

    初学Python(二)——数组 初学Python,主要整理一些学习到的知识点,这次是数组. # -*- coding:utf-8 -*- list = [2.0,3.0,4.0] #计算list长度 ...

  3. Python学习二:词典基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...

  4. 有关python下二维码识别用法及识别率对比分析

    最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar .zbarlight.zxing. 1.三个模块的用法: #-*-coding=utf-8-*- import ...

  5. PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。

    Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...

  6. 从Scratch到Python——Python生成二维码

    # Python利用pyqrcode模块生成二维码 import pyqrcode import sys number = pyqrcode.create('从Scratch到Python--Pyth ...

  7. 用python生成二维码

    Python生成二维码,可以使用qrcode模块, github地址 我是搬运工 首先安装, 因为打算生成好再展示出来,所以用到Pillow模块 pip install qrcode pip inst ...

  8. Python 实现二维码生成和识别

    今天突然想给自己自己做个头像,然后还是二维码的形式,这样只要扫一扫就可以访问我的主页.然后就开始自己的苦逼之路... 其实实现二维码java,c#,C++等都可以实现:由于自己正在学python,所以 ...

  9. Python - 模块(二)

    目录 Python - 模块(二) re re下面的方法 logging os Python - 模块(二) re re模块提供了正则表达式的相关操作 主要字符介绍: . 通配符,除了换行符之外的任意 ...

  10. 使用 Python 生成二维码

    在“一带一路”国际合作高峰论坛举行期间, 20 国青年投票选出中国的“新四大发明”:高铁.扫码支付.共享单车和网购.其中扫码支付指手机通过扫描二维码跳转到支付页面,再进行付款.这种新的支付方式,造就二 ...

随机推荐

  1. springboot aop+@interface实现日志记录

    一.基本概念 1.自定义注解 自定义注解我们必须了解四个元注解,什么是元注解?元注解指作用于注解之上的元数据或者元信息,简单通俗的讲,元注解就是注解的注解 . Documented与Inherited ...

  2. python3.4对已经存在的excel写入数据

    #!/usr/bin/env python # -*- coding:utf-8 -*- # __author__ = "blzhu" """ pyt ...

  3. 整合Spring+Struts2+Mybatis加spring单元测试等

    前言 自己是在CentOS7的IntelliJ IDEA里开发的,里面中文输入法有问题经常用不了,所以这里用了很多chinglish,希望不要介意: 一:pom依赖 <?xml version= ...

  4. ERR_CACHE_MISS 上一页提示确认重新提交表单

    SITUATION: 设备搜索后,根据返回结果 list.php 进入特定设备的详细页面 one.php,但点击后退按钮(上一页)返回 list.php,会出现确认重新提交表单的错误页面 ERR_CA ...

  5. chrome 字体太浅,如何设置

    "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-directwrite-for-ui

  6. android的消息处理机制(图文+源码分析)—Looper/Handler/Message[转]

    from:http://www.jb51.net/article/33514.htm 作为一个大三的预备程序员,我学习android的一大乐趣是可以通过源码学习google大牛们的设计思想.andro ...

  7. 图解Eclipse中配置Maven并创建Maven的Web工程

      打开eclipse,Windows->Preferences,如下图所示: 2 在Preferences作如下配置,如下图所示: 3 配置完Maven的安装目录后,还需要配置Maven的配置 ...

  8. Eclipse workspace 被占用问题

    eclipse 使用一段时间后,有时会因为一些故障自己就莫名奇妙的关闭了,再打开时有时没有问题,有时会提示错误 Workspace Unavailable: Workspace in use or c ...

  9. redis简单使用

    主要参考资料:http://wiki.jikexueyuan.com/project/redis-guide/data-type.html一.redis 安装1.在官网下载安装包2.解压安装包 tar ...

  10. 【并查集的另一个思考方向】POJ1456

    POJ1456 这个题一看好像就是用贪心做啊,一个结构体,拍一下序,vis数组一遍遍扫荡,最后输出值,没错,贪心的确能做出来,而这类题目也能应用并查集,实现得思想也是贪心 #include <i ...