• Python-02


    由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    %
    运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。

    常见的占位符有:

    %d 整数
    %f 浮点数
    %s 字符串
    %x 十六进制整数
     ASCII 255 1bytes
    1980 gb2312 7***
    1995 GBK1.0 2W+//unicode 2bytes
    2000 GB18030 27***
    utf-8 en 1bytes zh 3bytes


    list

    Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

    当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界,记得最后一个元素的索引是len(classmates) - 1

    list是一个可变的有序表,所以,可以往list中追加元素到末尾:

    >>> classmates.append('Adam')
    >>> classmates
    ['Michael', 'Bob', 'Tracy', 'Adam']
    

    也可以把元素插入到指定的位置,比如索引号为1的位置:

    >>> classmates.insert(1, 'Jack')
    >>> classmates
    ['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
    

    要删除list末尾的元素,用pop()方法:

    >>> classmates.pop()
    'Adam'
    >>> classmates
    ['Michael', 'Jack', 'Bob', 'Tracy']
    

    要删除指定位置的元素,用pop(i)方法,其中i是索引位置:

    >>> classmates.pop(1)
    'Jack'
    >>> classmates
    ['Michael', 'Bob', 'Tracy']
    

    如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素:

    >>> classmates[-1]
    'Tracy'
    
     

    list里面的元素的数据类型也可以不同,比如:

    >>> L = ['Apple', 123, True]
    

    list元素也可以是另一个list,比如:

    >>> s = ['python', 'java', ['asp', 'php'], 'scheme']
    >>> len(s)
    4
    

    如果不考虑安全因素,可以考虑列表

    列表是有序的元素集合

    列表元素可以通过索引访问单个元素

     

    tuple

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

    >>> classmates = ('Michael', 'Bob', 'Tracy')
    

    现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0]classmates[-1],但不能赋值成另外的元素。

    不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

    tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

    元组的概念

    元组是包含多个元素的类型,元素之间用逗号分割

    t1=123,456,“hello”

    元组可以是空的,t2=()

    元组可以包含一个元素也可以有外括号或者无外括号

    元组可以是不同类型

    元组中各个元素存在先后的关系,可以通过索引访问元组中的元素

    元组定义后不能更改也不能删除

    元组类型 更为安全

    条件判断和循环

    注意不要少写了冒号

    当然上面的判断是很粗略的,完全可以用elif做更细致的判断:

    age = 3
    if age >= 18:
        print 'adult'
    elif age >= 6:
        print 'teenager'
    else:
        print 'kid'
    

    elifelse if的缩写,完全可以有多个elif

    循环

    Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来,看例子:

    names = ['Michael', 'Bob', 'Tracy']
    for name in names:
        print name


    第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现:

    sum = 0
    n = 99
    while n > 0:
        sum = sum + n
        n = n - 2
    print sum


    原来从raw_input()读取的内容永远以字符串的形式返回,把字符串和整数比较就不会得到期待的结果,必须先用int()把字符串转换为我们想要的整型:

    dict

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

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


    要避免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可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象

    这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。

    要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key:

    >>> 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
    set([1, 2, 3])
    

    注意,传入的参数[1, 2, 3]是一个list,而显示的set([1, 2, 3])只是告诉你这个set内部有1,2,3这3个元素,显示的[]不表示这是一个list。

    重复元素在set中自动被过滤:

    >>> s = set([1, 1, 2, 2, 3, 3])
    >>> s
    set([1, 2, 3])
    

    通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:

    >>> s.add(4)
    >>> s
    set([1, 2, 3, 4])
    >>> s.add(4)
    >>> s
    set([1, 2, 3, 4])
    

    通过remove(key)方法可以删除元素:

    >>> s.remove(4)
    >>> s
    set([1, 2, 3])
    

    set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:

    >>> s1 = set([1, 2, 3])
    >>> s2 = set([2, 3, 4])
    >>> s1 & s2
    set([2, 3])
    >>> s1 | s2
    set([1, 2, 3, 4])
    
    set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。

  • 相关阅读:
    文件夹无法删除解决方案
    常用Web Service汇总(天气预报、时刻表等)
    浏览器兼容手册
    如何在word2007下右键添加“新建Word 2003 文档”
    Centos7上实现不同网段的服务器文件共享
    ubuntu安装界面 会出现不完整情况
    Centos7搭建dhcp服务器
    Centos7上搭建ftp服务器
    Centos7上配置网络和本地yum方法
    浅谈网络流
  • 原文地址:https://www.cnblogs.com/gzoof/p/7084216.html
Copyright © 2020-2023  润新知