2016/1/27学习内容

第二章 Python序列-tuple

tuple创建的tips

  • a_tuple=(‘a’,),要这样创建,而不是a_tuple=(‘a’),后者是一个创建了一个字符

tuple常用操作

  • 类似list,但是不能进行修改.能作为字典的key值
  • 当然如果tuple中的元素有list,要另当别论

序列解包

>

- 可以用序列解包对多个变量同时进行赋值

- 序列解包也可以用于列表和字典。字典默认是对key操作,如果需要key-value操作,需要items()方法,如果仅对value操作,需要用values()方法明确指定

- 在调用函数时,在实参面前加入一个星号”*”也可以进行序列解包,从而实现将序列中的元素值一次传递给相同数量的形参,详情见之后.

生成器推倒式

  • 生成器推导式和列表推倒式非常接近.
  • 生成器推导式的结果是一个生成器对象。不是列表,也不是元组,而是一种迭代器(惰性计算).
  • 利用next或者作为迭代器使用
  • 当所有元素访问结束以后,如果需要重新访问其中的元素,必须重新创建该生成器对象。
g=(i**2 for i in range(0,10))
print(g)
#<generator object <genexpr> at 0x0000000002307CF0>
print(tuple(g)) #转换为列表
#(0, 1, 4, 9, 16, 25, 36, 49, 64, 81)
print(tuple(g)) #元素已经遍历结束,所以会为空
#()
g=(i**2 for i in range(0,10))
print(g.__next__())
# 0
print(g.__next__())
# 1
print(g.__next__())
# 4
g=(i**2 for i in range(0,10))
for i in g:
print (i,end=' ');
#0 1 4 9 16 25 36 49 64 81

第二章 Python序列-dict

定义

  • 字典是”键-值对“的无序可变序列,字典中的每个元素包含两个部分:”键“和”值”。定义字典时,每个元素的“键”和“值”用冒号分隔,相邻元素之间用逗号分隔,所有的元素放在一堆大括号“{”和“}”中。
  • 字典的“键”可以是Python 中任意不可变的数据,不能是列表,集合,字典
  • 键不能重复 ,值能重复

内置函数globals() locals()

  • globals()返回当前作用域的所有全局变量和值的字典
  • locals() 返回当前作用域的所有局部变量和值得字典

字典创建与删除

  • 使用内置函数dict()通过已有数据快速创建字典

    x=dict(zip(keys,values))
  • 使用内置函数dict()根据给点的“键值对”来创建字典

    d=dict(name='Zhou Yong',age=18)

formkeys(list)

  • 还可以给定内容为键,创建值为空的字典

    adict=dict.fromkeys(['name','age','sex'])
  • 使用del删除

字典元素的读取

  • 下标:直接使用下标,若指定的键不存在会抛出异常

    Dict['name2']
  • .get(dict[,指定值]):比较推荐的也是更安全的字典语速访问方法是用字典对象的get()方法,当键不存在的时候返回指定值,若不指定值,则返回None。

  • .items():返回字典的键值对列表

  • .values(): 返回字典的值列表

字典元素的添加,修改

  • 指定键为下标赋值时,若键已经存在就修改,不存在就赋值。
  • 可以用对象的方法.updata(dict),用另一个字典批量更新当前字典,原则同上
  • .clear()
  • .pop(key) 删除并返回指定键的元素
  • .popitem() 删除并返回字典中的一个元素 类似随机了。感觉没什么卵用7

扩展

collections模块下的defaultdict

类似于C++STL中的MAP

可以规定好值的类型。

from collections import defaultdict
frequences=defaultdict(str);
for item in z :
frequences[item]+='a';
print(frequences.items()) from collections import defaultdict
frequences=defaultdict(1);
from item in z :
frequences[item]+=1;
print(frequences.items())

collections模块下的Counter类

计数的扩展类,统计各元素出现的次数,本质为一个dict

还有方法可以查找出现最多的元素等功能

collections模块下的OrderedDict

字典按照插入顺序排序

Python序列-set

集合的创建与删除

set()

set中不支持嵌套列表

del

只能删除整个集合

pop()

删除并返回第一个,不接受参数

add(x)

增加元素x 不是append

remove(x)

删除指定元素x

集合操作

并集

  • set_a|set_b
  • set_a.union(set_b)

交集

  • set_a&set_b
  • set_a.intersection(set_b)

差集

  • set_a-set_b
  • set_a.difference(set_b)

对称差

  • set_a^set_b
  • set_a.symmetric_difference(b_set)

子集

  • x.issubstr(y)

[Python笔记][第二章Python序列-tuple,dict,set]的更多相关文章

  1. [Python笔记][第二章Python序列-复杂的数据结构]

    2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...

  2. [python笔记][第二章Python序列-list]

    2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...

  3. Python笔记·第二章—— Python的编码问题(一)

    一.什么是编码 可以说,计算机是一个即聪明又笨蛋的家伙.说它聪明,是因为他可以做很多事情,它的强大无需多说,大家应该都有所了解以及感受.但是为什么说它又是个笨蛋呢,因为我们在电脑上写出的每一个字,保存 ...

  4. [Python笔记][第一章Python基础]

    2016/1/27学习内容 第一章 Python基础 Python内置函数 见Python内置函数.md del命令 显式删除操作,列表中也可以使用. 基本输入输出 input() 读入进来永远是字符 ...

  5. Python笔记·第一章—— Python基础(一)

    一.Python的简介 1.Python的由来与版本 1.1 python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文 ...

  6. Python自学:第二章 Python之禅

    >>print import <Python之禅>,提姆·彼得斯著 美胜于丑. 显式优于隐式. 简单胜于复杂. 复杂总比复杂好. 平的比嵌套的好. 稀疏胜于稠密. 可读性计数. ...

  7. Python中内置数据类型list,tuple,dict,set的区别和用法

    Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...

  8. 第二章Python入门

    第二章 Python入门 2.1.简介 Python是著名的"龟叔"(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言 Pytho ...

  9. Android群英传笔记——第二章:Android开发工具新接触

    Android群英传笔记--第二章:Android开发工具新接触 其实这一章并没什么可讲的,前面的安装Android studio的我们可以直接跳过,如果有兴趣的,可以去看看Google主推-Andr ...

随机推荐

  1. [Protractor] Locators and Suites in Protractor

    HTML: <ul class="list"> <li ng-repeat="item in itmes" ng-click="se ...

  2. mysql保存emoji表情(微信开发用户昵称..)

      java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for colum n 'name' at row 1 at c ...

  3. Android学习笔记--远程服务的使用

    1.AIDL和Binder Android系统四大组件Activity, Content Provider, Broadcast和Service均可以进行跨进程数据传输. Activity可以隐式调用 ...

  4. python的编码问题研究------使用scrapy体验

    python转码译码 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !impo ...

  5. MongoDB学习笔记04

    创建索引使用ensureIndex方法,对于同一个集合,同样的索引只需要创建一次,反复创建是徒劳的. 对某个键的索引会加速对该键的查询,然而,对于其它查询可能没有帮助,即便是查询中包含了被索引的键.实 ...

  6. Android布局自定义Shap圆形ImageView,可以单独设置背景与图片

    一.图片预览:                  一.实现功能: 需求要实现布局中为圆形图片,图片背景与图标分开且合并到一个ImageView. 二.具体实现: XML中布局中定义ImageView, ...

  7. O(1)时间删除链表节点

    问题描述:给定单相链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点. 这个比较简单,做不做解释,直接看参考代码,不过有一点就是要注意,还是要看删除的节点类型,不能保证总是O(1)时间 ...

  8. (原)Ubuntu16 中安装torch版的cudnn

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5668471.html 参考网址: https://devtalk.nvidia.com/default ...

  9. 前端开发者使用JS框架的三个等级

    目前前端开发者使用JS框架是种很普遍的现象,因为框架可以加快开发速度,同时避免各类浏览器的兼容性问题.不过同样是用框架开发,不同开发者的境界水平还是有一定差距,本文将这些前端开发者分为三个等级. 第一 ...

  10. python随机产生4个互不相等的随机数

    从0-9中随机产生4个互不相等的数, 方法一: import random s=[] while(len(s)<4): x=random.randint(0,9) if x not in s: ...