Python中的集合类型.

1.list_option.py

2.listsplit_option.py

3. dic_option.py

4.iter_option.py

1.list_option.py

 # coding=utf8
 __author__ = 'SummerChill'
 #list 有序的列表、元素可以是不同类型的,元素值可以重复

 #list的初始化
 l=list()
 l=[]
 l=[1,2,3,'crxy',[1,2,3]]
 l=['a','b','c','d','b','b','e']

 #增加元素
 #追加元素list的末尾
 l.append('new')
 #添加元素到指定的索引位置
 l.insert(2,'Two')

 #删除元素
 #根据索引删除 如果索引缺省则会删除末尾的元素
 l.pop()
 l.pop(1)
 #根据value删除 只会删除第一个出现的value为'b'的元素
 l.remove('b')

 #修改元素
 l[3]='Three'

 #查询 如果index为整数表示索引,如果是负数表示取倒数第几个
 # print(l[2])
 # print(l[-2])

 # 最终打印的结果
 # c
 # b

 #tuple 元组 和list类似 只是一旦初始化在不能修改 只能查询和遍历
 #主要用作函数的返回值
 t=()
 t=tuple()
 t=(1,2,3,'a','b')

 #t[1]='new'  #NO!!!!!
 # TypeError: 'tuple' object does not support item assignment

 # print(t[1])
 # print(t[-1])

 #########字符串的操作返回一个副本
 data='str'
 result=data.upper()
 print(data,result)#('str', 'STR')

 #########list的操作作用在list本身
 l=[1,2,3]
 result=l.append(4)
 print(l,result)#([1, 2, 3, 4], None)#返回None说明append没有返回值
 ###############################################

 print(l)
 #拓展list 在list的尾部扩展增加新的集合
 l.extend(['as','s','a','b'])
 print(l)#[1, 2, 3, 4, 'as', 's', 'a', 'b']

 #统计list中某个元素的出现的次数

 #统计list中某个元素的出现的index 返回第一个匹配的元素的索引

 #指定区间的查找 start stop 包含start 不包含stop
 #查不到报错不在list中。
 #print(l.index('a',2,5))#ValueError: 'a' is not in list

 #反转 倒叙排列
 l.reverse()
 print(l)#['b', 'a', 's', 'as', 4, 3, 2, 1]
 l.sort()
 print(l)#[1, 2, 3, 4, 'a', 'as', 'b', 's']

 #排序需求:按照元素的长度来排序
 #通过key指定的函数来查找要排序的依据。key_fun(item)
 #将key_fun(item)的返回值,传入 cmp_fun(x,y) 进行比较并排序。
 #cmp_fun(x,y)返回值决定了排序的位置。如果 cmp_fun(x1 ,x2) <0 x1排在x2的前面。
 l=['b','a','c','one','two','three','four']
 def key_fun(item):
     return len(item)
 #如果item是int类型的,是不能调用len()方法的.
 #TypeError: object of type 'int' has no len()

 def cmp_fun(x,y):
     return x-y

 #自定义排序
 l.sort(key=key_fun,cmp=cmp_fun)
 print(l)#['b', 'a', 'c', 'one', 'two', 'four', 'three']

 #lamda表达式 起到了函数速写的功能,允许在代码内嵌入一个函数的定义。类似于匿名函数
 l.sort(key=lambda item:len(item),cmp=lambda x,y:x-y)
 print(l)#['b', 'a', 'c', 'one', 'two', 'four', 'three']

 t=('a','b','c','a')
 #count value的出现次数
 print(t.count('a'))
 # 查找tuple中value的index 如果不存在则报错 ValueError: tuple.index(x): x not in tuple
 print(t.index('c'))

2.listsplit_option.py

 # coding=utf8
 __author__ = 'SummerChill'

 #L[m:n]表示,从索引m开始取,直到索引n 但包含索引n;
 #L[m:n:p]表示:从索引m开始到索引n取数据,但包含索引n,每p个取一个。

 l=['a','b','c','d','e','f','g']

 #L[m:n]表示,从索引m开始取,直到索引n 但包含索引n;
 print(l[1:5])#['b', 'c', 'd', 'e']
 #L[m:n:p]表示:从索引m开始到索引n取数据,但包含索引n,每p个取一个。
 print(l[1:5:3])#['b', 'e']

 # m n p 可以为负数
 #m、n为负数表示倒数第几个  前面包含后面不包含
 print(l[-5:-1])#['c', 'd', 'e', 'f']
 #p<0 从尾部向首部取元素
 print(l[5:1:-1])#['f', 'e', 'd', 'c']

 print(l[-1:-4:-2])#['g', 'e']

 #m n p 可以缺省
 #m不写从头开始取  n不写取到尾部 p不写默认为1
 print(l[::])#['a', 'b', 'c', 'd', 'e', 'f', 'g']
 print(l[:5:2])#['a', 'c', 'e']
 print(l[1::2])#['b', 'd', 'f']
 print(l[1:5])#['b', 'c', 'd', 'e']
 print(l[5:1])#[]

3. dic_option.py

 # coding=utf8
 __author__ = 'SummerChill'

 #初始化字典
 dic=dict()
 dic={'a':'A','b':'B','c':'C'}

 #增加和修改
 dic['c']='New'
 dic['d']='D'
 #删除指定的key
 dic.pop('b')
 print(dic)#{'a': 'A', 'c': 'New', 'd': 'D'}

 #查询 dic['g'] 如果key不存在则会报错 dic.get(key,defaultvalue)
 #如果有默认值在key不存在的情况下会返回默认值
 #print(dic['g'])#报错  KeyError: 'g'

 print(dic.get('g','defalut'))#defalut
 print(dic.get('a','defalut'))#A
 print(dic.get('g'))#None

 #判断是否包含key
 print(dic.has_key('g'))#False

 #list中的元素为tuple类型。
 print(dic.items())#[('a', 'A'), ('c', 'New'), ('d', 'D')]
 #list 其中的元素就是key或者value本身
 print(dic.keys())#['a', 'c', 'd']
 print(dic.values())#['A', 'New', 'D']

 ##############set  元素不能重复  重复的会自动过滤
 s=set()
 s=set([1,2,3,4,1,2,3])
 print(s)#set([1, 2, 3, 4])

 #增加元素
 s.add(6)
 #删除元素
 s.remove(2)

 #print(s[1]) NO !!!!!!!!!!!!!
 # 'set' object does not support indexing

 #想把2改为6 分两步
 # s.remove(2)  s.add(6)
 print(s)#set([1, 3, 4, 6])
 #set 转为list
 l=list(s)
 print(l)#[1, 3, 4, 6]
 #list 转为set
 s=set(l)
 print(s)#set([1, 3, 4, 6])

 #遍历set的元素
 for i in s:
     print(i)# 1  3  4  6

 s.clear()

4.iter_option.py

 # coding=utf8
 __author__ = 'SummerChill'

 sl=[1,2,3]
 sd={'a':'A','b':'B'}

 #列表生成式  从一个或者多个集合中遍历得到元素然后再筛选计算得到一个新的list
 #for   if
 #sl中元素分别平方组成新的元素
 l=[x*x for x in sl if x%2==0]
 print(l)#[4]
 l2=[x*x for x in sl]
 print(l2)#[1, 4, 9]
 #sd 里面的key和value组合成一个list。key value组合['a A','b B']
 l=[ k+' '+v for k,v in sd.items()]
 print(l)#['a A', 'b B']
 print(sd.items())#[('a', 'A'), ('b', 'B')]

 #复合循环
 l=[x*y for x in sl for y in sl if x+y>=3]
 print(l)#[2, 3, 2, 4, 6, 3, 6, 9]

 l=[x*x for x in [1,2,3,4,5,6]]
 print(l)#[1, 4, 9, 16, 25, 36]

 ###列表生成器 并没有生成一个列表
 g=(x*x for x in [1,2,3,4,5,6])
 #用next(g) 读取生成器的元素 但是如果遍历到末尾再查询会报错
 #print(next(g))#1
 #print(next(g))#4
 #print(next(g))#9
 #print(next(g))#16
 #print(next(g))#25
 #print(next(g))#36
 #print(next(g))#到这个地方报错...g中的元素都找完了.

 for i in g:
     print(i) # 1  4  9  16  25  36

 l=[1,2,3]
 t=(1,2,3)
 d={'a':'A','b':'B'}
 s=set([1,2,3])

 #默认的遍历
 #遍历元素本身
 for i in l:
     print(i)#1  2  3
 for i in t:
     print(i)#1  2  3
 for i in s:
     print(i)#1  2  3
 #对于字典 默认遍历的是key
 for i in d:
     print(i)#a b

 for k,v in d.items():
     print(k,v)#('a', 'A') ('b', 'B')
 for k in d.keys():
     print(k)#a b
 for v in d.values():
     print(v)#A B
 ###############################
 #迭代
 #dict
 # d.iteritems()
 # d.iterkeys()
 # d.itervalues()
 for k ,v in d.iteritems():
     print(k,v)#('a', 'A') ('b', 'B')
 for k in d.iterkeys():
     print(k)#a b
 for v in d.itervalues():
     print(v)#A B

 ##其他的集合:使用iter函数构造一个迭代器
 print(l)#[1, 2, 3]
 for i in iter(l):
     print(i)#1 2 3

 print(t)#(1, 2, 3)
 for i in iter(t):
     print(i)#1 2 3

 print(s)#set([1, 2, 3])
 for i in iter(s):
     print(i)#1 2 3

 #遍历时候加上索引 通过enumerate
 print(l)#[1, 2, 3]
 for i,v in enumerate(l):
     print(i,v)#(0, 1) (1, 2) (2, 3)

 print(t)#(1, 2, 3)
 for i,v in enumerate(t):
     print(i,v)#(0, 1) (1, 2) (2, 3)

 print(s)#set([1, 2, 3])
 for i,v in enumerate(s):
     print(i,v)#(0, 1) (1, 2) (2, 3)

 #dict 遍历的是key
 print(d)#{'a': 'A', 'b': 'B'}
 for i,k in enumerate(d):
     print(i,k,d.get(k))#(0, 'a', 'A') (1, 'b', 'B')

 #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. 第16章:MongoDB-聚合操作--聚合管道--$project

    ①$project $project作用:修改文档的结构,可以用来重命名.增加或删除文档中的字段. 执行的规则如下: |- 普通列({成员 : 1 | true}):表示要显示的内容: |- “_id ...

  2. 1143 Lowest Common Ancestor

    The lowest common ancestor (LCA) of two nodes U and V in a tree is the deepest node that has both U ...

  3. (转)手把手图文教你eclipse下如何配置tomcat

    转自:http://jingyan.baidu.com/article/ca2d939dd90183eb6d31ce79.html 很多初学,尤其自学JavaWeb的朋友首次在eclipse下配置to ...

  4. 原生JS一些操作

    很久没写原生的JS了,上周做了一个小东西让我又重新了解了一下原生JS,以下记录一些常见的原生JS var canvArrow = document.getElementById('js-canv_ar ...

  5. webService之helloword(web)

    spring 整合webservice pom.xml文件 <dependencies> <!-- CXF WS开发 --> <dependency> <gr ...

  6. 用css写出下拉框(代码转自wq群)

    做网易云音乐首页时遇到的问题,鼠标指在右上角头像时出现下拉框. <style>/* css*/ #body{ float: left; } #xialakuang{ background- ...

  7. 广搜 迷宫(zznu 1962)

    http://acm.zznu.edu.cn/problem.php?id=1962 题目描述 在很多 RPG (Role-playing Games) 游戏中,迷宫往往是非常复杂的游戏环节.通常来说 ...

  8. Java案例:随机点名器

    案例介绍: 随机点名器,即在全班同学中随机的找出一名同学,打印这名同学的个人信息.需具备以下3个内容:1)存储所有同学姓名2)总览全班同学姓名3)随机点名其中一人,打印到控制台 案例需求分析: 全班同 ...

  9. Swagger生成WebAPI文档

    WebAPI2.0 项目可以使用Swagger能够轻易查看API文档,查看以下配置 1.打开程序包管理控制台输入: Install-Package Swashbuckle 2.在对应项目里的App_S ...

  10. hdu 1541

    因为y的输入是从小到大,所以不用考虑y坐标的问题 只考虑x坐标就行 还有个小细节就是0<=x,y,<=32000  x和y取0的时候树状数组处理不到 x++就行了 #include < ...