Python学习笔记(二)

2016/10/18 Python

Python是一种计算机编程语言,为了能在执行程序时不会产生歧义,就必须有一套它自己的语法。而编译器也就是负责把符合语法规定的程序转换成cpu可以直接执行的机器码,然后执行。

Python也有它自己的一套语法,Python的语法比较简单,也和其他面向对象的编程语言有很大类似,需要特别注意的是Python采用缩进方式来划分代码块,当语句已冒号“:”结尾时,缩进的语句视为一个语句块。还要注意Python的程序区分大小写。所以代码习惯不太好的同学,可能会比较难受。

两种数据类型:list和tuple

list

list和tuple都是python中内置的两种列表类型,其中list是可以动态操作,可以随时添加和删除其中的元素。

>>> person = ['mike','bob','lily']  
>>> person  
['mike','bob','lily'] 

可以通过索引来访问list中的各个元素,索引从0开始。如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素,也可以用len()函数可以获得list元素的个数,最后一个元素的索引是len(classmates) - 1

list的基本操作如下:
L.append(var) #追加元素
L.insert(index,var) #在指定位置插入元素
L.pop(var) #返回最后一个元素,并从list中删除之
L.remove(var) #删除第一次出现的该元素
L.count(var) #该元素在列表中出现的个数
L.index(var) #该元素的位置,无则抛异常
L.extend(list) #追加list,即合并list到L上
L.sort() #排序
L.reverse() #倒序

tuple

tuple和list非常相似,区别是tuple一旦初始化后就不能修改,也就是没有和list相似一些方法可以对其元素进行动态操作,但仍然可以通过所以对元素进行访问。tuple的初始化和list也很相似,初始化元素由大括号()包括。不可变的tuple的意义是为了代码更加安全。

>>> person = ('mike','bob','lily')

当定义一个tuple时,它的元素必须要确定下来,如果定义一个空的tuple,可以在()内包括任何内容。但如果定义只有一个数字元素的tuple,就会出现歧义,例如:

>>> t = (1)  
>>> t 
1  

原因是()既可以表示tuple,又可以表示数学公式中的小括号。Python规定,在这种情况下,均按小括号计算。所以为了消除这种歧义,在定义只有一个元素的tuple时必须加一个逗号,来消除歧义:

>>> t = (1,) 
>>> t 
(1,) 

在tuple中包含一个list元素,就可以定义一个“可变的”tuple:

>>> t = ('a','b',['c','d'])
>>> t[2][0] = 'e'
>>> t[2][1] = 'f'  
>>> t
('a','b',['e','f']) 

可以发现tuple定义时,其中的list元素发生了变化,这表明tuple在存储list时存储的是list的“指针”。所以tuple的元素不可变是指它的每个元素的指向永远不变,但它所指向的元素本身可以变。

list和tuple是Python内置的两种有序集合,在可以用tuple时要尽量使用tuple来保证代码的安全。

字典dict和集合set

dict

字典类型也是很多高级语言中支持的类型,Python中也支持字典dict。dict以键值对的形式存储,创建方式就是用{}并用:分隔键和值。key值和value值一一对应。

>>> d={'guan':20,'li':80}  
>>> print d  
{'guan': 20, 'li': 80}

可以通过键来赋值;通过get()获取值;通过pop()删除值,并将删除的元素返回。dict的查找方式也类似于字典的查找,根据给定的key找到对应value的地址,直接存取。所以在存储的时候,就必须要根据key算出value的存放位置,这样在取得时候才能根据给定的key找到对应value。

set

set是Python中的集合类型,用于存放一组不重复的key值集合,但不存储其value。

set有两种创建方式:
用set函数,参数是list集合,例如:s=set([1,2,3,4,5]);
用大括号包起来的集合字面量,例如: s={1,3}。

set的常用操作有:
add(key) #向set中添加元素,如果元素已经存在则不会生效
remove(key) #删除元素。
| #操作符可以取集合并集
& #操作符取集合交集
- #求两个集合的差
^ #求两个集合的异或
issubset() #判断一个集合是否为另外一个集合的子集
issuperset() #判断一个集合是否为另外一个集合的超集

想留言却没看到评论框?点这里。

Search

    Post Directory