Day02 pyc文件,列表,元组,字典,深浅拷贝,数据运算

一. pyc文件

    Python是一门解释型语言,和编译型不同在于,编译型语言是在程序执行前先编译完代码,然后再把它转换成机器语言直接执行,典型代表是C,
而解释型语言没有先编译的过程,而是在程序执行时通过解释器对程序逐行解释,然后直接执行,典型代表是Ruby。
随着Java等虚拟机语言兴起,又不能纯粹的把语言分为解释型和编译型。以Java为例,Java首先通过编译器将程序编译成字节码文件,然后通过解释
器解释成机器语言再执行,所以Java是一种先编译后解释的语言。
Python其实也是先编译后解释,当Python运行时,编译的结果保存在内存中的PyCodeObject中,当Python结束时,Python解释器则将位于内存中的
PyCodeObject写回到.pyc文件。当Python第二次运行时,程序会首先找硬盘中的.pyc文件,如果存在该文件,则执行,如果不存在,则重复上面过程。
.pyc文件是PyCodeObject一种持久化方式。

二. 数据类型

1.数字
int  整型
float 浮点型
complex 复数

2.字符串
'Hello World!'

3.布尔型
True or False

4. 列表(有序)

1,创建一个列表,解释器在内存中创建一个类似数组的数据结构存储数据,数据项自下而上堆放,堆栈自下而上的编号从0开始自增1
2,列表是一个数据集合,数据项之间用逗号隔开,整个列表用中括号包围。
3,列表可以伸缩,数据使用的所有内存都由Python管理
4,可以用BIF处理列表,还支持列表的一组方法。index(),append(),extend(),remove(),pop(),insert()..
    eg:cast=['Diesel','Statham','Diesel']
    or cast= dict(['Diesel','Statham','Diesel'])
    print(cast)
 
    #查找列表中指定元素的所在位置,如果有多个元素,返回第一次找到的位置
    cast.index('Statham')
   
    #往列表末尾追加一个元素
    cast.append('Walker')
   
    #往列表末尾扩展一个列表
    cast.extend(['Rodriguez','Johnson'])
   
    #从列表里移除一个指定的元素,如果有多个重复元素,只移除第一个元素
    cast.remove('Walker')
   
    #默认从列表末尾移除元素,也可指定位置移除元素
    cast.pop(2)
   
    #指定插入位置,插入数据项
    cast.insert(2,'Walker')

5,列表切片
    eg:cast=['Diesel','Statham','Diesel']
    cast[:1]    #取第一个元素
    cast[1:2]   #取第二个元素
    cast[-1:]   #取最后一个元素
   
    一次删除一个列表切片
    del cast[1:]

6,列表长度
    eg:cast=['Diesel','Statham','Diesel']
    len(cast)
   
7,列表可以用于存放任意数据,而且数据可以是混合类型。列表还可以嵌套列表。
    eg:cast=['Diesel','Statham',['Walker',2013,['Furious 7']]]

4. 元组(不可变的列表)
    eg:cast=('Diesel','Statham','Diesel')
    or cast=tuple(('Diesel','Statham','Diesel'))
   
    cast.index('Diesel')    #指定元素的位置
   
    cast.count('Diesel')    #指定元素的计数
   
5. 字典(无序)
    字典是可变的,并且可以存储任意数量的Python对象,包括其他容器类型另一个容器类型。字典包括键对(称为项目)及其相应的值。Python字典也被称为关联数组或哈希表。
    每个按键都来自它的值用冒号(:),该项目以逗号分隔,整个事情是包含在大括号分隔。没有任何项目一个空的字典是写只有两个大括号,就像这样:{}
    键在一个字典中是唯一的,而值可能不是。字典的值可以是任何类型的,但键必须是不可变的数据类型,例如字符串,数字,或元组。
   
    eg:cast={'name':'Diesel','age':'35'}
    or cast=dict({'name':'Diesel','age':'35'})
   
    1,访问字典的值
   
    访问字典的值可以通过方括号引起要访问的键,结果就会得到该键的值
    cast['name']
   
    如果访问一个不存在的键,会得到一个错误提示
   
    2.更新字典
   
    可以通过添加一个新条目,修改现有条目或新增。
    eg:cast={'name':'Diesel','age':'35'}
    cast['sex'] = 'man'
    cast结果为 {'name':'Diesel','age':'35','sex':'man'}
   
    cast['sex'] = 'women'
    cast结果为 {'name':'Diesel','age':'35','sex':'women'}
   
    3.删除字典
   
    可以删除单个字典元素或清除字典中的全部内容。也可以删除整个字典在一个单一的操作。要删除整个字典,只要用del语句。
    eg:cast={'name':'Diesel','age':'35','sex':'man'}
   
    del cast['name']    #删除一个键值
    cast.clear()        #删除所有键值,清空字典
    del cast            #删除字典
   
    4.字典的键属性
    字典值没有限制。它们可以是任意Python对象,无论是标准的对象或用户定义的对象。但是作为键,是不可以这样的。
    键是唯一的,一个键只能对应一个值,如果存在多个值,那么会自动清理重复的,只保留最后一个值
    键是不可改变的,所以只能使用不可变的类型作为键,比如字符串,数字,元组
   
    5.字典的常用方法
   
    cast.clear()    #清空字典
   
    cast.copy()     #浅拷贝字典
   
    cast.fromkeys() #从序列键值创建一个新的字典
    eg:info=['name','sex','age']
    cast.fromkeys(info,10)
    print(cast) 结果为 {'name':10,'sex':10,'age':10}
   
    cast.get()        #返回给定键的值。如果键不可用,则返回默认值None
    eg:cast={'name':'Diesel','age':'35'}
    cast.get('sex')
    cast.get('sex','man')
   
    cast.has_key()    #如果给定的键在字典可用,has_key()方法返回true,否则返回false
   
    cast.items()    #方法返回字典的(键,值)元组对的列表
   
    cast.keys()        #返回在字典中的所有可用的键的列表
   
    cast.setdefault()    #返回字典可用的键值,如果给定键不可用,则它会返回所提供的默认值,类似get()方法,但是会设置字典键
   
    cast.update()    #将参数的字典对象更新到当前字典中
   
    cast.values()    #返回在字典中所有的值列表

三,数据运算

1,算数运算
    +    -    *    /
    %    #取模运算
    **    #幂运算
    //    #整除,取商的整数部分

2,比较运算
    ==
    !=    <>
    >
    <
    >=
    <=
   
3,赋值运算
    =
    +=
    -=
    *=
    /=
    %=
    **=
    //=
   
4,逻辑运算
    and
    or
    not
   
5,成员运算
    in
    not in

6,身份运算
    is
    is not
   
7,位运算
    &    #按位与
    |    #按位或
    ^    #按位亦或
    ~    #按位取反
    <<    #按位左移
    >>    #按位右移
   
四,浅拷贝和深拷贝

     copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象
     copy.deepcopy 深拷贝 拷贝对象及其子对象

     import copy
     a = [1, 2, 3, 4, ['a', 'b']]    #原始对象
     b = a        #赋值,传对象的引用
     c = copy.copy(a)                #对象拷贝,浅拷贝
     d = copy.deepcopy(a)            #对象拷贝,深拷贝
     a.append(5)     #修改对象a
     a[4].append('c')  #修改对象a中的['a', 'b']数组对象

     print 'a = ', a
     print 'b = ', b
     print 'c = ', c
     print 'd = ', d

     输出结果:
     a =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
     b =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]
     c =  [1, 2, 3, 4, ['a', 'b', 'c']]
     d =  [1, 2, 3, 4, ['a', 'b']]

 

posted @ 2016-05-17 15:49  摸个鱼儿  阅读(225)  评论(0编辑  收藏  举报