一、循环

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. .Net中jQuery.ajax()调用asp.net后台方法 总结

    利用JQuery的$.ajax()调用.Net后台方法有多种方式, 不多说了  直接上代码 前台代码 <script type="text/javascript"> $ ...

  2. python 之文本搜索与替换文件中的文本

    #!/usr/local/env python import os, sys nargs = len(sys.argv) if not 3 <= nargs <= 5: print &qu ...

  3. tcp协议栈

    TCP/IP是互联网的核心协议,也是大多数网络应用的核心协议.就前面一段时间面试中问到的TCP/IP问题,这里给出一个简单的小结.   TCP由RFC793.RFC1122.RFC1323.RFC20 ...

  4. html绑定

    目的 html绑定可以绑定DOM元素内的HTML内容. 示例: <div data-bind="html: details"></div> <scri ...

  5. 【ubuntu】开机启动

    背景 在ubuntu下做开发,虚拟机要经常开启和关闭,重要的进程需要随机自启,非重要的可以手工启动.比如nginx就需要自启,confluence就没那么重要了. 为了控制哪些程序要自启,哪些程序不要 ...

  6. centos6 + tomcat+ jdk配置步骤

    1. 获取tomcat, jdk安装文件 mkdir /media/smbdirmount -o username=pas,password=111111 //109.110.100.50/pas / ...

  7. Python学习之旅--第二周--元组、字符串、运算、字典

    一.元组 另一种有序列表叫元组:tuple.tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字: # Author:Tim Gu tuple = (" ...

  8. 树莓派+Android Things

    在开始之前 谷歌前不久发布了Android Things面向物联网的系统,用意是想让android开发者用原来开发app的方式开发硬件相关的应用,扩展了android开发的方向和前景,而谷歌的Andr ...

  9. 第四天 内置函数2 随机码 装饰器 迭代器、生成器 递归 冒泡算法 JSON

    关于函数的return li = [11,22,33,44] def f1(arg): arg.append(55) li = f1(li) print(li) 因为li = f1(li) 实际赋值的 ...

  10. MVC修改文件上传大小问题

    在web.config文件的system.web节点的httpRuntime节点加入 maxRequestLength="2147483647" executionTimeout= ...