一、循环

Python的循环有两种,一种是for...in循环,依次吧list或tuple中的每个元素迭代出来。

>>>names = ['Michael','Bob','Tracy']

>>> for name in names:

    print(name)

执行这段代码后,输出结果为:

Michael

Bob

Tracy

Python提供一个range()函数,可以生成一个整数序列,在通过list()函数可以转换为list:

>>>list(range(5))

[0,1,2,3,4]

range(101)可以生成0-100的整数序列。

第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。

>>>sum = 0

>>>n = 99

>>>while n > 0:

    sum = sum + n

    n = n - 2

  print(sum)

二、dict

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储。

用Python写一个dict如下:

>>>d = {'Michael':95,'Bob':75,'Tracy':85}

>>>d['Michael']

95

把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:

>>>d['Adam'] = 67

>>>d['Adam']

67

由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:

>>>d['Jack'] = 90

>>>d['Jack']

90

>>>d['Jack'] = 88

>>>d['Jack']

88

若key不存在,dict就会报错:

要避免key不存在的错误,有两种办法,一种通过in判断key是否存在:

>>>'Thomas' in d

False

二是通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:

>>>d.get('Thomas')

>>>d.get('Thomas',-1)

-1

注意:返回None的时候Python的交互式命令行不显示结果。

要删除一个key,用pop(key)方法,对应的value也会从dict中删除:

>>>d.pop('Bob')

75

>>>d

{'Michael':95,'Tracy':85}

请务必注意:dict内部存放的顺序和key放入的顺序是没有关系的。

和list比较,dict有以下几个特点:

1、查找和插入的速度极快,不会随着key的增加而增加;

2、需要占用大量的内存,内存浪费多。

而list相反:

1、查找和插入的时间随着元素的增加而增加;

2、占用空间小,浪费内存很少。

所以,dict是用空间换区时间的一种方法。

正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。

在Python中,字符串、整数等都是不可变的。

>>> key = [1, 2, 3]
>>> d[key] = 'a list'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list
三、set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合:
>>>s = set([1,2,3])
>>>s
{1,2,3}
注意,传入的参数[1,2,3]是一个list,而显示的{1,2,3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。
重复元素在set中自动被过滤:
>>>s = set{[1,1,2,2,3,3]}
>>>s
{1,2,3}
通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:
>>>s.add(4)
>>>s
{1,2,3,4}
通过remove(key)方法可以删除元素:
>>>s.remove(4)
>>>s
{1,2,3}
set可以看出数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
>>>s1 = set([1,2,3])
>>>s2 = set([2,3,4])
>>>s1 & s2
{2,3}
>>>s1 | s2
{1,2,3,4}
set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。
再议不可变对象
对于可变对象,比如list,对list进行操作,list内部的内容是会变化的,比如:
>>> a = ['a','b','c']
>>>a.sort()
>>>a
['a','b','c']
而对于不可变对象,比如str,对str进行操作:
>>>a = 'abc'
>>>a.replace('a','A')
'Abc'
>>>a
'abc'

Python笔记2-20151023的更多相关文章

  1. Python笔记之不可不练

    如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...

  2. boost.python笔记

    boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...

  3. 20.Python笔记之SqlAlchemy使用

    Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...

  4. Python笔记——类定义

    Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...

  5. 13.python笔记之pyyaml模块

    Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...

  6. 8.python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  7. python笔记 - day8

    python笔记 - day8 参考: http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/wupeiqi/art ...

  8. python笔记 - day7-1 之面向对象编程

    python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...

  9. python笔记 - day7

    python笔记 - day7 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 面向对象,初级篇: http://www.cnblog ...

  10. python笔记 - day6

    python笔记 - day6 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 大纲: 利用递归,实现阶乘: Python反射 pyt ...

随机推荐

  1. myeclipse启动服务器时,tomcat出错问题

    启动服务器,错误提示: Launching web on myeclipse tomcat has encountered a problem An internal error occurred d ...

  2. [SOJ]连通性问题

    Description 关系R具有对称性和传递性.数对p q表示pRq,p和q是0或自然数,p不等于q.要求写一个程序将数对序列进行过滤,如果一个数对可以通过前面数对的传递性得到,则将其滤去.例如:输 ...

  3. [ An Ac a Day ^_^ ] [kuangbin带你飞]专题十二 HDU 1176 免费馅饼

    题意: 中文题意不解释…… 思路: 先把x,T存到矩阵里 然后像数塔一样从最底层走一边就行了 dp[i][j]代表在时间为j时 第i个位置最多能吃到多少个馅饼 最后输出第0时刻的5位置的馅饼数量就好了 ...

  4. SQL中游标的使用--遍历数据逐行更新或删除:相当于for循环

    --------------------------------------例子1 单纯的游标-------------------------------- create TABLE Table1 ...

  5. ios GCD的使用及封装

    实现代码: CGDHelper /* * Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法. * 系统要求:iOS4.0以上. */ #import & ...

  6. springmvc+maven

    http://blog.csdn.net/zht666/article/details/8673609/

  7. 在Linux下访问Windows共享目录的配置方法

    在Linux下访问Windows共享目录的配置方法 1.在Windows上设置一个共享目录 如:将d:\RedHat_disk设置为共享目录 2.在Windows上创建一个用户,如tommy,密码11 ...

  8. qemu毒液漏洞分析(2015.9)

    0x00背景 安全娱乐圈媒体Freebuf对该漏洞的有关报道: 提供的POC没有触发崩溃,在MJ0011的博客给出了修改后可以使qemu崩溃的poc.详见: http://blogs.360.cn/b ...

  9. redis12--常用API

    上一篇总结我们使用我们本地的Eclipse中创建的jedis工程,链接到了我们处于VMware虚拟机上的Linux系统上的Redis服务,我们接下来讲一下jedis的一些常用的API.(1)jedis ...

  10. JavaScript——Cookie

    JavaScript中的Cookie基础 页面用来保存信息的,比如登录.记住用户名. [cookie的特性] (1)同一个网站中所有页面共享一套cookie: (2)数量.大小有限: (3)有保质期, ...