zoukankan      html  css  js  c++  java
  • python学习-1

    1.输出中文

    Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示
    如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释

    # -*- coding: utf-8 -*-

    2. 四则运算

    如果我们要计算 11 / 4 的精确结果,按照“整数和浮点数混合运算的结果是浮点数”的法则,把两个数中的一个变成浮点数再运算就没问题了:

    3. 正则运算法则:短路计算。

    4. 列表增删改

    L.append('Paul')          #末尾插入
    L.insert(0, 'Paul')          #自定义索引插入
    L.pop()                         #末尾删除
    L.pop(2)                       #自定义索引删除
    L[2] = 'Paul'                  #自定义修改
    同样是表示班里同学的名称,用tuple表示如下:

    >>> t = ('Adam', 'Lisa', 'Bart')
    t = ('a', 'b', ['A', 'B'])
    缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。

     if 语句后接表达式,然后用:表示代码块开始。
    在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车:

    L = ['Adam', 'Lisa', 'Bart'] for name in L: print name

    要特别留意while循环的退出条件。
    要在循环体内直接退出循环,可以使用 break 语句。

    还可以用continue跳过后续循环代码,继续下一次循环。
    for x in ['A', 'B', 'C']: for y in ['1', '2', '3']: print x + y

    花括号 {} 表示这是一个dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略。

    要避免 KeyError 发生,有两个办法:

    一是先判断一下 key 是否存在,用 in 操作符:

    if 'Paul' in d: print d['Paul']
    二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:

    >>> print d.get('Bart') 59 >>> print d.get('Paul') None

    dict内部是无序的,不能用dict存储有序的集合。
    dict的第三个特点是作为 key 的元素必须不可变,

    要把新同学'Paul'的成绩 72 加进去,用赋值语句:

    >>> d['Paul'] = 72

    >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } >>> for key in d: ... print key ... Lisa Adam Bart

    因为set内部存储的元素是无序的。

    因为set不能包含重复的元素

    访问 set中的某个元素实际上就是判断一个元素是否在set中。>>> 'Bart' in s
    True

    set并判断用户输入的月份是否有效。

    set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。

    set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。

    直接使用 for 循环可以遍历 set 的元素:

    >>> s = set(['Adam', 'Lisa', 'Bart']) >>> for name in s: ... print name ... Lisa Adam Bart

    一是把新的元素添加到set中,二是把已有元素从set中删除。
    所以用add()可以直接添加,而remove()前需要判断。

    求绝对值的函数 abs
    比较函数 cmp(x, y) 就需要两个参数,如果 x<y,返回 -1,如果 x==y,返回 0,如果 x>y,返回 1

    int()函数可以把其他数据类型转换为整数

    str()函数把其他类型转换成 str

    def my_abs(x): if x >= 0: return x else: return -x

    Python的函数返回多值其实就是返回一个tuple,但写起来更方便。
    由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面:

    自定义变量数值:def average(*args):

    注意: 集合是指包含一组元素的数据结构,我们已经介绍的包括:
    1. 有序集合:list,tuple,str和unicode;
    2. 无序集合:set
    3. 无序集合并且具有 key-value 对:dict

    迭代与按下标访问数组最大的不同是,后者是一种具体的迭代实现方式,而前者只关心迭代结果,根本不关心迭代内部是如何实现的。

    Python中,迭代永远是取出元素本身,而非元素的索引。

    对于有序集合,元素确实是有索引的。有的时候,我们确实想在 for 循环中拿到索引,怎么办?

    1. 方法是使用 enumerate() 函数:

    >>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
    >>> for index, name in enumerate(L):
    ...     print index, '-', name
    ... 
    0 - Adam
    1 - Lisa
    2 - Bart
    3 - Paul

    2. zip()函数可以把两个 list 变成一个 list:

    >>> zip([10, 20, 30], ['A', 'B', 'C'])
    [(10, 'A'), (20, 'B'), (30, 'C')]

    1. values() 方法实际上把一个 dict 转换成了包含 value 的list。

    2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

    >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
    >>> print d.items()
    [('Lisa', 85), ('Adam', 95), ('Bart', 59)]

    可以看到,items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value:

    >>> for key, value in d.items():
    ...     print key, ':', value
    ... 
    Lisa : 85
    Adam : 95
    Bart : 59

    和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。

    列表生成:

    1)
    >>> L = [] >>> for x in range(1, 11): ... L.append(x * x)

    2)
    >>> [x * x for x in range(1, 11)]



  • 相关阅读:
    Frameset 框架
    FHS 文件层次标准
    history 命令
    QT基础走起
    Android中导入jar包v4的错误
    Android工具Eclipse点击卡死或者无响应情况
    让程序飞起来
    Android中报错
    【2019.9.23】NOIP2017 practice exam
    【技巧】时间复杂度
  • 原文地址:https://www.cnblogs.com/shary-blue/p/10398341.html
Copyright © 2011-2022 走看看