五、模块
模块相当于c语言里面的库,c里面的动态库或静态库是有后缀名的,同样Python的模块也是有后缀名的,而且必须为.py。
1、模块的使用
使用import语句,如import sys 表示使用sys模块
2、常见模块及其使用方法
(1)sys模块
sys.argv 这个变量是一个字符串列表,用来获取命令行的参数列表。
3、创建自己的模块
def 模块名():
六、数据结构
在Python中有三种内建的数据结构列表、字典和元组,既然是内建的就可以直接使用。
1、列表list
list其实是一个类,用来存储一个序列,列表里面可以存储任一对象,不同类型的对象可以共存,如列表里面还可以再存储一个列表,而且列表中还有字符串、整数等元素。每一个用,隔开的对象都是list的一个元素。
(1)定义一个对象
使用[]表示创建了一个list的对象,如:shoplist=['123','456'],注意这里与Java或者c++里面对对象的实例化又是不同的,不需要指明类名,就是对象名=[内容],[]就表明了对类list的实例化。
(2)针对列表的操作
类list里面自然会封装一些方法和对象,以供我们使用。
①遍历list
for i in shoplist:
print i
②添加一个元素
a、尾部添加
shoplist.append(‘789’)
(3)求列表长度
列表的长度是指列表中包含元素的个数,len(shoplist)
(4)访问列表中的某个元素
shoplist[0] ,访问列表中的第一个元素,可见列表中元素的编号也是从0开始,与c语言的数组一样, shoplist[len(shoplist)-1] ,访问列表中最后一个元素,可见[]里面的内容可以是变量,这与c一样。
(5)列表排序
shoplist.sort(),如果列表里面存储的都是字符串,那么排序时根据字符串的首字母进行排序,另外,
排序完后,是对原列表里面的内容做修改。
(6)删除列表中的一个元素
del shoplist[0] 删除列表中第一个元素。
2、元组
元组和列表类似,不同点在于元组的值一旦定义就不可修改,这个与c里面字符串是相同的。 元组一般用于存储安全的数据,保证数据是只读的。
(1)元组对象实例化
zoo=(‘aaa’,'bbb','cccc')
empty=()
single=(2,)#注意包含单个元素的定义方式,与list不同
可见,list用[]实例化对象,而元组用()实例化对象
(2)求元组对象个数
与list相同
(3)访问元组某个元素
与list相同
(4)for循环遍历元组
与list相同
(5)元组与打印print
元组常用于对print打印的格式控制,如:
int=100
str="test"
print 'int=%d ,str=%s' % (int,str)
可见,Python中对整形和字符串的格式控制与c的是一样的。
3、字典
字典是key:value类型的,key必须是唯一、不可变的。
(1)定义
dic={key1:value1,key2:value2}
可见,字典的定义使用{},字典中元素之间仍然使用,分隔开,key与value之间使用:。
(2)访问字典中的元素
要根据字典中key来访问value,如dic[key1],可以读也可以写,如果读时key1不存在就会报错,写时key1不存在就会新增,写时key1存在就会覆 盖旧值。删除字典中的元素,del dic[key1],可见字典是动态的,这点与list相同
(3)求字典长度
与list相同,如len(dic)
(4)遍历字典
for key,value in dic.items()
print '%s,%d',% (key,value)
使用了字典的items()方法,该方法返回一个元组,因此,使用两个变量key,value且用,隔开。
(5)根据key判断元素是否在字典中
if key1 in dic:
语句
4、序列
列表、元组和字典均是序列,序列主要支持两个操作索引操作和分片操作,索引操作访问一个元素,分片操作访问序列的子集。
(1)索引操作[]
使用操作符[]来访问序列中的元素,[]里面是索引编号,可以是变量也可以是常量,从前往后排,索引值从0开始,从后向前排索引值
从-1开始,即-1访问最后一个元素,-2访问倒数第二个元素。这点与c是不同的。
(2)切片操作
也使用[],但是[]里面用:还有可选的数字,下面距离说明
list=['dog','cat','boy','girl']
list[1:3]#就是访问编号1开始到3结束,不包括3,即1和2.
list[0:]#就是访问编号从0开始到最后的
list[1:-1]#就是访问编号1开始到最后一个之前的所有元素。
5、参考
将一个对象赋值给一个变量时,其实这个变量只是指向了那个对象,变量并非是对象本身,这就是变量名到对象的绑定。
如 list1=['as',''qwe,'123']#变量list1指向了对象所在的内存
list2=list1#这个只是变量间的赋值,并非存在对象的拷贝
因此list2与list1指向了同一块内存,要想实现对象拷贝就必须先产生一块新的内存对象,然后让新变量指向这块内存对象。
序列的切片操作就提供了这样一个功能,list1[:]返回一个序列对象,因此会产生一个新的内存块,list2=list1[:],这样list2
指向的内存块与list1指向的是不同的内存块,且list1指向的内存块的内容拷贝。
阅读(627) | 评论(0) | 转发(0) |