python使用(二)
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使用(二)的更多相关文章
- Python 基础 二
Python 基础 二 今天对昨天学习的Python基础知识进行总结,学而不思则惘,思而不学则殆! 一.先对昨天学习的三大循环的使用情况进行总结: 1.while循环的本质就是让计算机在满足某一条件的 ...
- 初学Python(二)——数组
初学Python(二)——数组 初学Python,主要整理一些学习到的知识点,这次是数组. # -*- coding:utf-8 -*- list = [2.0,3.0,4.0] #计算list长度 ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- 有关python下二维码识别用法及识别率对比分析
最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar .zbarlight.zxing. 1.三个模块的用法: #-*-coding=utf-8-*- import ...
- PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。
Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...
- 从Scratch到Python——Python生成二维码
# Python利用pyqrcode模块生成二维码 import pyqrcode import sys number = pyqrcode.create('从Scratch到Python--Pyth ...
- 用python生成二维码
Python生成二维码,可以使用qrcode模块, github地址 我是搬运工 首先安装, 因为打算生成好再展示出来,所以用到Pillow模块 pip install qrcode pip inst ...
- Python 实现二维码生成和识别
今天突然想给自己自己做个头像,然后还是二维码的形式,这样只要扫一扫就可以访问我的主页.然后就开始自己的苦逼之路... 其实实现二维码java,c#,C++等都可以实现:由于自己正在学python,所以 ...
- Python - 模块(二)
目录 Python - 模块(二) re re下面的方法 logging os Python - 模块(二) re re模块提供了正则表达式的相关操作 主要字符介绍: . 通配符,除了换行符之外的任意 ...
- 使用 Python 生成二维码
在“一带一路”国际合作高峰论坛举行期间, 20 国青年投票选出中国的“新四大发明”:高铁.扫码支付.共享单车和网购.其中扫码支付指手机通过扫描二维码跳转到支付页面,再进行付款.这种新的支付方式,造就二 ...
随机推荐
- mysql学习之路_事物_存储过程_备份
数据备份与还原 备份:将当前已有的数据保留. 还原:将已经保留的数据恢复到对应表中 为什么要做数据备份 1,防止数据丢失,被盗,误操作 2,保护数据记录 数据备份还原方式有多种:数据表备份 单表数据备 ...
- JS中的计时器事件
JS可以实现很多java代码不易完成的功能.这里学习一些js中的计时器事件. JavaScript 一个设定的时间间隔之后来执行代码,称之为计时事件. 主要通过两个方法来实现: 1.setInterv ...
- 解决编译错误:cc: Internal error: Killed (program cc1)
错误现象: cc: Internal error: Killed (program cc1) ... 大体上是因为内存不足,临时使用交换分区来解决吧 sudo mkswap /swapfile sud ...
- 微信接入时tomcat的端口调整
必须以http://或https://开头,分别支持80端口和443端口. www.xx.com 等同于 www.xx.com:80 但tomcat默认端口是8080,需要修改为80 修改方法: TO ...
- 1.2.1继承Thread类
实现多线程的方法有2种:方法一是继承Thread,方法二是实现Runnerable接口 使用继承Thread类的方法创建多线程的时候,最大的局限性就是不支持多继承,因为java语言的特点就是单继承,因 ...
- 开源HIS之C/S选型
客户端/服务的形式是我中爱的,我认可只有这样软件跑起来不会失控.因为你不知道每一个程序员是否足够清醒.但一开始我说过要从基本的应急的门诊收费开始,所以我并不打算一启动就写一个服务,并为之选型:TCP/ ...
- share pool 管理机制
Library cache是Shared pool的一部分,它几乎是Oracle内存结构中最复杂的一部分,主要存放shared curosr(SQL)和PLSQL对象(function,procedu ...
- linux下修改root密码以及找回密码的方法
以root身份登陆,执行: # passwd 用户名 (修改密码) # useradd 用户名 (添加用户) 具体示例如下:[root@bogon ~]# passwd root Changing p ...
- Android 批量打包利器
因为添加了渠道号,对应不同的渠道包,此时,动不动就几十个包,实在让人头疼,此时,需要引入自动打包功能. 首先,列举出援引的博客内容 美团Android自动化之旅—生成渠道包 http://tech.m ...
- OpenGL中的常用绘图的命令与效果(经验设置)
1. 剔除多边形表面 在三维空间中,一个多边形虽然有两个面,但我们无法看见背面的那些多边形,而一些多边形虽然是正面的,但被其他多边形所遮挡.如果将无法看见的多边形和可见的多边形同等对待,无疑会降低我们 ...