1.迭代器 iterator

iter 函数,构造集合。

next 方法依次返回迭代器的值

In [42]: li

Out[42]: [1, 2, 3, 4, 5]

In [43]: it = iter(li)

In [44]: it.next()

Out[44]: 1

In [45]: it.next()

Out[45]: 2

当所有的元素都返回完的时候,会抛出一个StopIterator 的异常。

list,tuple,set 都属于集合。

for 语句,当将一个列表传递给for 语句的时候,实际上for 语句会将列表转换为迭代器,然后隐示的地执行该迭代器。

    2. 字典 dict

    2.1 定义与初始化 In [46]: d = {}

In [47]: type(d)

Out[47]: dict

In [48]: d = {'a':1,'v':'k'}

In [49]: d

Out[49]: {'a': 1, 'v': 'k'}

在字典中key是不允许重复的,所以字典中的key必须是可hash的对象。

    2.2字典的操作

    2.2.1 keys 将字典的所有key作为一个列表返回In [50]: d

Out[50]: {'a': 1, 'v': 'k'}

In [51]: d.keys()

Out[51]: ['a', 'v']

    2.2.2 iterkeys 将字典的所有key作为一个迭代器返回

In [52]: d.iterkeys()

Out[52]: <dictionary-keyiterator at 0x12ff7e0>

In [53]: it = d.iterkeys()

In [54]: it.next()

Out[54]: 'a'

    2.2.3 values 返回一个列表,该列表是所有元素的值

In [55]: d

Out[55]: {'a': 1, 'v': 'k'}

In [56]: d.values()

Out[56]: [1, 'k']

    2.2.4 items ,返回一个列表,列表中的每个元素是一个元组,元组中的两个值分别是key和value

In [57]: d

Out[57]: {'a': 1, 'v': 'k'}

In [58]: d.items()

Out[58]: [('a', 1), ('v', 'k')]

遍历一个字典:

In [59]: for v in d.values():

....:

print v

....:

1

k

In [60]: for k,v in d.items():

....:

print "%s => %s" % (k,v)

....:

a => 1

v => k

    2.3.5 get ,按照key取值,若存在则返回,否则返回None

In [61]: d.get('a')

Out[61]: 1

还可以给get 传递第二个参数,表示若key不存在,则返回某个值。

In [65]: d.get('xx',100)

Out[65]: 100

    2.2.6 has_key ,判断某个key是否存在

In [63]: d.has_key('a')

Out[63]: True

In [64]: d.has_key('aa')

Out[64]: False

    2.3给字典增加一个键值对:

In [66]: d = {}

In [67]: d['c'] = 1

In [68]: d

Out[68]: {'c': 1}

In [69]: d['xx'] = 100

In [70]: dOut[70]: {'c': 1, 'xx': 100}

In [71]: d['xx'] = 200

In [72]: d

Out[72]: {'c': 1, 'xx': 200}

    2.4update 操作

In [73]: d

Out[73]: {'c': 1, 'xx': 200}

In [74]: d.update({'a':1,'b':2})

In [75]: d

Out[75]: {'a': 1, 'b': 2, 'c': 1, 'xx': 200}


    2.5 python字典为引用传值,如:

In [76]: d

Out[76]: {'a': 1, 'b': 2, 'c': 1, 'xx': 200}

In [77]: d1 = d

In [78]: d1['a'] = 200

In [79]: d1

Out[79]: {'a': 200, 'b': 2, 'c': 1, 'xx': 200}

In [80]: d

Out[80]: {'a': 200, 'b': 2, 'c': 1, 'xx': 200}

    2.6 copy 操作:重新复制一个字典

In [81]: d

Out[81]: {'a': 200, 'b': 2, 'c': 1, 'xx': 200}

In [82]: d2 = d.copy()

In [83]: d2

Out[83]: {'a': 200, 'b': 2, 'c': 1, 'xx': 200}

In [84]: d2['a'] = 300

In [85]: d2

Out[85]: {'a': 300, 'b': 2, 'c': 1, 'xx': 200}

In [86]: d

Out[86]: {'a': 200, 'b': 2, 'c': 1, 'xx': 200}

In [87]: id(d)

Out[87]: 19662176

In [88]: id(d2)

Out[88]: 19501072

In [89]: id(d1)

Out[89]: 19662176

3.列表解析

[expression for item in iterator] 一个最基本的列表解析,返回一个列表

在expression 可以使用item 变量

    返回一个迭代器

(expression for item in terator)

In [90]: li = [1,2,3]

In [91]: l = (x+1 for x in li)

In [92]: l

Out[92]: <generator object <genexpr> at 0x12fa730>

In [93]: l.next()

Out[93]: 2In [94]: l.next()

Out[94]: 3

迭代器是惰性求值,只有用到了才会计算该值,否则不会。列表是先求出所有值的。所以当数据大的时候迭代器有较好的性能。

    带条件的列表解析

[expression for item in iterator if condition] ,当满足条件的时候才会append到列表中,并返回。当变为小括号的时候,就会返回一个迭代器。

In [95]: li

Out[95]: [1, 2, 3]

In [96]: [x for x in li if x % 2 ==0]

Out[96]: [2]

    带多个条件 [expression for item in iterator if conditionX if conditionY]

带多个迭代器(笛卡尔积与列表解析):[expr for x in IterX for y in IterY] ,类似于两个嵌套的for循环操作

In [99]: [(x,y) for x in [1,2,3] for y in [1,3]]

Out[99]: [(1, 1), (1, 3), (2, 1), (2, 3), (3, 1), (3, 3)]

列表解析的性能远高于循环语句。

Python内置容器(2)——字典,迭代器,列表解析相关推荐

  1. python内置容器--元组,字典与集合

    1.4.原组 1.4.1.元组(tuple):将一组不可变的数据序列组合起来形成一个特殊的内置容器 1.4.2元组不允许的操作: 修改,新增元素 删除元素(允许删除整个元组) 所有会对元组内部元素发生 ...

  2. python内置函数用来返回列表、元组、字典_python程序设计第一章基础知识 题库及选解...

    由于学校的python是笔试,所以找了份感觉比较好的题库刷了下其中前八章的填空和判断,附上选解.各章链接如下 填空 1. Python安装扩展库常用的是()工具.(pip) 2. Python标准库m ...

  3. python内置函数什么可以返回列表、元组_Python内置函数_________可以返回列表、元组、字典、集合、字符串以及range对象中元素个数。...

    [单选题]如果希望把一个可迭代对象转换为元组,该使用下面的哪个函数? [单选题]已知 x = [1, 2],那么执行语句 x[0:0] = [3, 3]之后,x的值为___________. [单选题 ...

  4. Python内置函数sorted()从入门到精通

    Python内置函数sorted()可以对列表.元组.字典.集合.字符串.range对象以及其他可迭代对象进行排序,返回排序后的列表,支持使用key参数指定排序规则,支持reverse参数指定升序或者 ...

  5. python内置函数可以返回数值型序列中所有元素之和_Python内置函数________________用来返回数值型序列中所有元素之和。...

    [单选题]表达式 ','.join('a     b  ccc\n\n\nddd     '.split()) 的值为______________. [单选题]表达式 'abcabcabc'.coun ...

  6. python内置函数用来返回序列中的最小元素_1000道Python题库系列分享二(48道)

    1.10 pip list 1.11 对 1.12 错 1.13 错 1.14 错 1.15 对 1.16 错 1.17 对 本期题目: 2.1 表达式int('11111', 2)的值为______ ...

  7. python内置函数sum_Python内置函数sum____用来返回数值型序列中所有元素之和。

    [单选题]关于函数参数传递中,形参与实参的描述错误的是( ). [判断题]PythonModuleDocs是Python的帮助文档. [单选题]以下关于Python的说法中正确的是哪一项? [判断题] ...

  8. Python之第六章 内置容器 --- 字典(映射)

    目录 Python之第六章 内置容器 --- 字典(映射) 1.定义: 2.格式: 3.字典创建示例 ​4.增加字典元素 5.删除字典 6.字典的访问 7.字典的复制 8.使用get()方法获取指定的 ...

  9. Python基础(四)(列表、元组、字典、字符串、Python内置函数、切片、运算符、成员运算符)

    高级变量类型 知识点回顾 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) 真 True 非 0 数 -- 非零即真 假 Fa ...

最新文章

  1. 程序员的自我修养三目标文件里有什么
  2. 天文学专业在什么时候学计算机,南京大学在985排名第几?南京大学最牛的专业是天文系吗?...
  3. 计算Fibonacci数列第n项的第8种方法(数学推导与Python实现)
  4. C# 执行文件的根目录 (转)
  5. 使用纯生js实现图片轮换
  6. 人工智能的下个十年在推理?
  7. 斯皮尔曼等级相关(Spearman’s correlation coefficient for ranked data)
  8. Ubuntu18.04安装中文字体SimHei
  9. Java读取文件的N种方法
  10. u盘插上显示计算机限制,为什么U盘插入电脑后CPU显示100%
  11. chart.js使用学习——混合图表
  12. Spring系列之@ComponentScan、@ComponentScans详解(bean批量注册)
  13. php include file_PHP Include文件实例讲解
  14. Excel如何统计指定背景颜色数据个数
  15. 【安信可NB-IoT模组EC系列AT指令应用笔记④】将设备位置接入阿里云地图,实现空间数据可视化
  16. bulldog-vulnhub
  17. 打印浏览正常,英文打印正常,但是中文打印乱码的问题
  18. U盘安装ubuntu18.04 优麒麟18.04 详细过程
  19. 《GitHub入门与实践》读书笔记
  20. 调整VM虚拟机显示窗口大小

热门文章

  1. linux控制协程参数,Linux高性能网络:协程系列05-协程实现之原语操作
  2. SQL Server - SqlLocalDB安装
  3. [Spring+Hibernate系列]2.项目介绍与首个MVC实例
  4. 自动填写html文本框的值,网页自动填表——文本输入框及多行文本输入框
  5. 用户姓名信息保护python,喜大普奔!Maya 2022来了?!
  6. gdbstub中的基本命令_程序员应该知道的 20 个 Linux 系统管理命令
  7. python3.7适用的opencv_通过python3.7.3使用openCV截图一个区域
  8. 解决谷歌浏览器重复上传同一文件失败的问题
  9. php 添加透明水印,php加水印的代码(支持半透明透明打水印,支持png透明背景)
  10. 中兴myos和鸿蒙,继华为鸿蒙系统以后!中兴再次发布新系统MyOS:可媲美苹果