文件操作:

open()

read()

readline()

readlines()

write()

writelines()

flush()   #刷新缓冲区

seek()   修改文件读写指针

tell()    查看当前的读写指针位置

close()

r     只读

w    只写

a     追加写

r+    读写    文件读写指针的位置   头位置   在文件不存在的时候不会创建文件   文件内容不会在打开时清空

w+   读写    文件读写指针的位置   头位置    在文件不存在的时候会创建文件     文件内容会在打开时清空

a+    读写    文件读写指针的位置   尾位置    在文件不存在的时候会创建文件     文件内容不会在打开时清空

>>> mystr = 'abc:efg'

>>> mystr.split(':')

['abc', 'efg']

过滤空格回车制表删除隐藏字符

>>> mystr = ' a b c '

>>> mystr.strip()

'a b c'

不会处理中间的空格

>>> mystr.rstrip()

' a b c'

>>> mystr.lstrip()

'a b c '

>>> mystr.replace(" ","")

'abc'

-----------------------------------------------复习------------------------------------------------

字典:dict

字典首先是键值对形式

key : value

>>> mydict = {1:'a',2:'b'}

>>> mydict

{1: 'a', 2: 'b'}

工厂方法:

把数据类型当作函数来使用,那么就是工厂函数,可以起到一个数据之间互相转换的作用

>>> mydict1 = dict(([1,'a'],[2,'b']))

>>> mydict1

{1: 'a', 2: 'b'}

>>>

内建方法:

fromkeys

>>> mydict2 = dict.fromkeys((1,2,3),'a')

#首先你们把一个key值的序列传过来,然后第二个参数是你的value

>>> mydict2

{1: 'a', 2: 'a', 3: 'a'}

>>> {key:value for key in mylist for value in mylist1}

{1: 'd', 2: 'd', 3: 'd', 4: 'd'}

字典是以keyvalue形式存在,key值经过hash算法,在内存映射一块保存value值得区域,

key值在经过hash算法之后,会生成一个唯一的值,任意两个数哪怕只有一位不同,生成出来的hash值也是截然不同的,因此我们得出,在字典中,key值唯一,一个字典中不可能出现两个一样的key,并且,因为做了hash,所以底层会维护一个hash表,也就是说字典的访问效率,要比列表和元组要高。

hash的值出来的结果是唯一的

hash的数据是一个不可变的数据才可以进行hash

>>> mydict3 = {1:'a',1:'b'}

>>>

>>> mydict3

{1: 'b'}

>>> mydict4 = {1:'a',[1,2,3]:'b'}

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: unhashable type: 'list'

>>> mydict4 = {1:'a',{2:'a'}:'b'}

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: unhashable type: 'dict'

字典是可变数据?还是不可变的数据类型

可变所以不可以hash

hash的都是什么?不可变的

序列:字符串,列表,元组》索引

访问字典中的值:无序

>>> mydict1

{1: 'a', 2: 'b'}

>>> mydict[0]

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

KeyError: 0

可以通过:

mydict[key]的方式来取出 value

>>> mydict[2]

'b'

为什么无序的也可以用for循环呢?

>>> mydict

{1: 'a', 2: 'b'}

>>> for var in mydict:

...     print(var)

...

1

2

迭代:可迭代的数据对象(数据集中的数据之间是否有位置关系的保存)

遍历:序列

更新:

添加:

>>> mydict

{1: 'b', 2: 'b'}

>>> mydict[1] = 'bbbb'

>>> mydict

{1: 'bbbb', 2: 'b'}

>>> mydict[3] = 'bbbb'

>>> mydict

{1: 'bbbb', 2: 'b', 3: 'bbbb'}

>>> mydict[3] = 'aaa'

>>> mydict

{1: 'bbbb', 2: 'b', 3: 'aaa'}

>>> mydict[4]

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

KeyError: 4

value 可以是任意有效数据对象,包括之前的函数对象,还有后面的类实例

红包

删除字典中的内容

>>> res = mydict.pop(1)

>>> res

'a'

pop可以弹出一个key:value键值对

返回的是key对应的value

>>> mydict.clear()

>>> mydict

{}

clear函数还可以清空这个字典

>>> mydict = {1:'a',2:'b',3:'c'}

>>> del mydict[1]

>>> mydict

{2: 'b', 3: 'c'}

还可以使用del语句删除单个key:value键值对

>>> mydict

{2: 'b', 3: 'c'}

>>> del mydict

del可以把这个数据对象给删掉,删除一次引用计数

真正释放数据内存的时候是这个引用计数为0的时候

>>> mydict1.popitem()

(1, 'a')

返回一个键值对

>>> mydict1.items()

dict_items([(2, 'b'), (3, 'c')])

>>> mydict1.items()

dict_items([(2, 'b'), (3, 'c')])

>>> list(mydict1.items())

[(2, 'b'), (3, 'c')]

items内置函数用来返回字典中所有的键值对保存在dict_items 这个数据类型里

>>> list(mydict1.keys())

[2, 3]

返回字典中所有的key 包装在了一个列表中

>>> list(mydict1.values())

['b', 'c']

>>> mydict1.values()

dict_values(['b', 'c'])

返回字典中所有的value 包装在了一个列表中

判断是否在这个数据类型中

in  判断字典的时候,是判断是否存在于字典中的key值里

>>> 1 in mydict

True

not in 

python2的老版本中,还有一个内建函数dict.has_keys()

异常抛出是从程序的最底层向上层抛出

try->except 捕获异常

>>> mydict = {1:func,2:func1}

>>> mydict[1]()

func

集合:set

集合(set):把不同的元素组成一起形成集合,是python基本的数据类型。(无序不重复)

集合其实就是字典去掉value

key值组成了一个集合

1:数据元素唯一

2:无序

3不可变

集合的应用场景:

如果说之后做爬虫的时候,首先你是不是获取到连接,(递归),是不是同一个连接你不能重复去爬取下载

去重,我们就可以放到集合中

set (可变)

frozenset(不可变)元组和字符串也不可变

>>> myset1.add('abcdefg')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

AttributeError: 'frozenset' object has no attribute 'add'

更新集合:

s.add()
s.update()   
一个序列,那么会将序列集合里的数据拆分成单个元素)

>>> myset.update(5)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: 'int' object is not iterable

访问集合:

集合是无序的,无法通过索引和切片的方式去访问其中的值

可以通过循环迭代,

     >>> for var in myset:

...     print(var)

...

b

1

2

3

4

删除集合中的元素或者是这个集合:

clear  可变集合

clear(...) method of builtins.set instance

Remove all elements from this set.

把集合里的数据对象都删除掉

pop

pop(...) method of builtins.set instance

    Remove and return an arbitrary set element.

Raises KeyError if the set is empty.

从集合中删除并且返回一个任意元素

并且当集合是空的时候pop是会出一个KeyError的错误  集合是无序的

remove

remove(...) method of builtins.set instance

    Remove an element from a set; it must be a member

If the element is not a member, raise a KeyError.

#从集合中删除对象,必须是一个成员

#如果我们没有这个成员   会引发一个KeyError

discard

    discard(...) method of builtins.set instance

    Remove an element from a set if it is a member.

If the element is not a member, do nothing.

#删除一个数据对象,如果他是集合的成员

#如果说你这里没有这个成员,不会报错,什么都不做

not

in

使用innot是效率很高的,因为凡是对hash表进行查找工作,要比普通序列查找要效率快的

 

--------------

字典和集合

1:无序

2:字典key唯一,集合中值唯一

3:字典做key值的这个数据必须是不可变的。必须是一个可hash的,集合里的可以是任意数据类型吗?

>>> myset = {1,1.5,True,[1,2,3,4],(1,2,3,4)}

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: unhashable type: 'list'

集合里的数据类型必须是不可变的可hash的值

keys()

values()

items()

update()

pop()

remove()

del

clear()

集合:

交并补

联合:(|)(union()

a | b a.union(b)   a集合中和b集合去重数据元素,剩下的组合到一起返回一个新的集合

交集:(&)(intersection

a &b  a.intersection(b)    a集合和b集合中,共同含有的集合成员组成到一起返回一个新的集合

差补:(-)(difference

a - b  a.difference(b)      a集合中,去掉所有与b集合中相同的元素,只在a中保留b中没有的集合成员

对称差分:(^ (symmetric_difference)

找出两个集合中,只属于集合a或集合b的元素

input() 接受用户输入的

split() 分割字符串的

strip() 去掉隐藏字符

不会用的函数可以百度,逻辑不要百度

#阶段考核:

#功能1

#可以实现多位数字混合四则运算 + - * /

# 2 + 11 - 23 * 17 / 32  和真正的计算器得出的结果一致

#并且是一行

不允许使用一切 eval 等直接实现的函数

 

python-集合、字典的更多相关文章

  1. Python集合&字典

    Python集合&字典 @ 目录 字典 字典的几种定义方式 第一种 第二种 第三种 字典的一些基本操作 通过key得到value 增加字典键值对 删除字典键值对 格式化操作 清空字典 复制字典 ...

  2. Python集合字典运算符

    1.集合2.字典3.运算符优先级 1.集合 创建:{} set([]) 注意:创建空的集合要用set()   特点:元素唯一,无序   运算: & 交集 | 并集 - 差集   方法:   s ...

  3. Python中字典和集合

    Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...

  4. python集合与字典的用法

    python集合与字典的用法 集合: 1.增加  add 2.删除   •del 删除集合 •discard(常用)删除集合中的元素  #删除一个不存在的元素不会报错 •remove 删除一个不存在的 ...

  5. python基础—字典

    阅读文本需要3分钟,不建议跳读 节目清单 字典是python中最重要的数据类型,字典由“键-值”对组成的集合,字典中的“值”通过“键”来引用.这里将介绍字典的定义.访问.排序等功能. 字典的创建 字典 ...

  6. 深入Python(1): 字典排序 关于sort()、reversed()、sorted()

    http://www.cnblogs.com/BeginMan/p/3193081.html 一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠 ...

  7. python集合可以进行相减

    python集合可以进行相减 student = {'tom','jim','mary','tom','jack','rose'} print(student) print('rose' in stu ...

  8. Python集合类型的操作与应用

    Python集合类型的操作与应用 一.Python集合类型 Python中的集合类型是一个包含0个或多个数据项的无序的.不重复的数据组合,其中,元素类型只能是固定数据类型,如整数.浮点数.字符串.元组 ...

  9. Python - 集合 - 第十一天

    Python 集合 集合(set)是一个无序的不重复元素序列. 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建 ...

  10. python中字典排序

    一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...

随机推荐

  1. C# 使用KingAOP面向切面编程

    1. 在Nuget中安装KingAOP 2. 日志DEMO public class Test : IDynamicMetaObjectProvider { [LogAspec] public voi ...

  2. 一个非常棒的jQuery 评分插件--好东西要分享

    现在做网页已经不仅限于实现功能了,更多的是要实现功能的同时追求更加美观的实现.比如页面上让用户评分的功能,你完全可以放5个RdioButton让用户选择分数,也可以用DropDownList来实现,但 ...

  3. 前端开发 - JQuery&Bootstrap - 总结

    一.JavaScript和Jquery的区别 1.javascript的缺点: 1.书写繁琐,代码量大 2.代码复杂 3.动画效果,很难实现.使用定时器 各种操作和处理 2.定义: 1.Javascr ...

  4. 原型模式(Prototype Pattern)--对象的克隆

    定义:使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象; 原型类的核心在于如何实现克隆方法: 能够实现克隆的Java类必须实现一个标识接口Cloneable,表示这个类支持被复制; 通 ...

  5. 系统架构--分布式计算系统spark学习(三)

    通过搭建和运行example,我们初步认识了spark. 大概是这么一个流程 ------------------------------                 -------------- ...

  6. PostgreSQL学习手册-模式Schema(转)

    原文:http://www.cnblogs.com/stephen-liu74/archive/2012/04/25/2291526.html 一个数据库包含一个或多个命名的模式,模式又包含表.模式还 ...

  7. redis的相关信息

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). string类型是Redis最基本的数据类型,一个 ...

  8. Springboot+shiro配置笔记+错误小结

    软件152 尹以操 springboot不像springmvc,它没有xml配置文件,那该如何配置shiro呢,其实也不难,用java代码+注解来解决这个问题.仅以此篇记录我对shiro的学习,如有对 ...

  9. session和token的区别

    session的使用方式是客户端cookie里存id,服务端session存用户数据,客户端访问服务端的时候,根据id找用户数据 而token一般翻译成令牌,一般是用于验证表明身份的数据或是别的口令数 ...

  10. phpcms v9模板制作常用代码集合

    phpcms v9模板制作常用代码集合(个人收藏) 1.截取调用标题长度 {str_cut($r[title],36,'')} 2.格式化时间 调用格式化时间 2011-05-06 11:22:33 ...