Python学习记录

Python学习记录

  1. 表示一个空格

  2. 当你输入name = raw_input()并按下回车后,Python交互式命令行就在等待你的输入了。这时,你可以输入任意字符,然后按回车后完成输入。再次输入name则可以直接显示刚才输入的内容

  3. 以#开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号“:”结尾时,缩进的语句视为代码块

  4. 数据类型:int, float, string

  5. 如果字符串内部既包含’又包含”怎么办?可以用转义字符\来标识

  6. 转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\

  7. 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义

  8. 如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容

  9. 字符串

    1
    2
    3
    4
    >>> ord('A')
    65
    >>> chr(65)
    'A'
  10. len()函数可以返回字符串的长度

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

    1
    2
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
  12. %运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。
    常见的占位符有:
    %d 整数
    %f 浮点数
    %s 字符串
    %x 十六进制整数

    1
    2
    3
    4
    >>> 'Hello, %s' % 'world'
    'Hello, world'
    >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
    'Hi, Michael, you have $1000000.'
  13. 列出班里所有同学的名字,就可以用一个list表示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>> classmates = ['Michael', 'Bob', 'Tracy']
    >>> classmates
    ['Michael', 'Bob', 'Tracy']
    #显示某一个
    >>> classmates[1]
    'Bob'
    #显示最后一个
    >>> classmates[-1]
    'Tracy'
    #添加
    >>> classmates.append('Adam')
    #插入
    >>> classmates.insert(1, 'Jack')

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

  14. 一种有序列表叫元组:tupletuplelist非常类似,但是tuple一旦初始化就不能修改

  15. Python的缩进规则,如果if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做。

    1
    2
    3
    4
    5
    6
    7
    age = 3
    if age >= 18:
    print 'adult'
    elif age >= 6:
    print 'teenager'
    else:
    print 'kid'

    elifelse if的缩写
    if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elifelse.

  16. 求和
    for求和

    1
    2
    3
    4
    sum = 0
    for x in range(101):
    sum = sum + x
    print sum

    while求和

    1
    2
    3
    4
    5
    6
    sum = 0
    n = 99
    while n > 0:
    sum = sum + n
    n = n - 2
    print sum
  17. raw_input()读取的内容永远以字符串的形式返回

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

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

    要删除一个key,用pop(key)方法,对应的value也会从dict中删除:

    1
    2
    3
    4
    >>> d.pop('Bob')
    75
    >>> d
    {'Michael': 95, 'Tracy': 85}
  19. setdict类似,也是一组key的集合,但不存储value。要创建一个set,需要提供一个list作为输入集合:

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

    传入的参数[1, 2, 3]是一个list,而显示的set([1, 2, 3])只是告诉你这个set内部有1,2,3这3个元素,显示的[]不表示这是一个list。
    通过add(key)方法可以添加元素到set中,通过remove(key)方法可以添加元素到set中。
    set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。

  20. Python的函数

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

  21. Python内置的常用函数还包括数据类型转换函数,比如int()函数可以把其他数据类型转换为整数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> int('123')
    123
    >>> int(12.34)
    12
    >>> float('12.34')
    12.34
    >>> str(1.23)
    '1.23'
    >>> unicode(100)
    u'100'
    >>> bool(1)
    True
    >>> bool('')
    False
  22. 在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

    1
    2
    3
    4
    5
    def my_abs(x):
    if x >= 0:
    return x
    else:
    return -x
  23. 如果想定义一个什么事也不做的空函数,可以用pass语句

    1
    2
    def nop():
    pass
  24. 对参数类型做检查,只允许整数和浮点数类型的参数。数据类型检查可以用内置函数isinstance实现:

    1
    2
    3
    4
    5
    6
    7
    def my_abs(x):
    if not isinstance(x, (int, float)):
    raise TypeError('bad operand type')
    if x >= 0:
    return x
    else:
    return -x
  25. 定义可变参数和定义list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数

    1
    2
    3
    4
    5
    def calc(*numbers):
    sum = 0
    for n in numbers:
    sum = sum + n * n
    return sum
  26. 在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。

    1
    2
    def func(a, b, c=0, *args, **kw):
    print 'a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw

在函数调用的时候,Python解释器自动按照参数位置和参数名把对应的参数传进去。

1
2
3
4
5
6
7
8
>>> func(1, 2)
a = 1 b = 2 c = 0 args = () kw = {}
>>> func(1, 2, c=3)
a = 1 b = 2 c = 3 args = () kw = {}
>>> func(1, 2, 3, 'a', 'b')
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {}
>>> func(1, 2, 3, 'a', 'b', x=99)
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}

最神奇的是通过一个tuple和dict,你也可以调用该函数

1
2
3
4
>>> args = (1, 2, 3, 4)
>>> kw = {'x': 99}
>>> func(*args, **kw)
a = 1 b = 2 c = 3 args = (4,) kw = {'x': 99}
  1. >>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
    取前三个

    1
    2
    3
    4
    5
    6
    7
    >>> r = []
    >>> n = 3
    >>> for i in range(n):
    ... r.append(L[i])
    ...
    >>> r
    ['Michael', 'Sarah', 'Tracy']
  2. 默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.itervalues(),如果要同时迭代key和value,可以用for k, v in d.iteritems()
    如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

    1
    2
    3
    4
    5
    6
    7
    >>> from collections import Iterable
    >>> isinstance('abc', Iterable) # str是否可迭代
    True
    >>> isinstance([1,2,3], Iterable) # list是否可迭代
    True
    >>> isinstance(123, Iterable) # 整数是否可迭代
    False
  3. 列表生成式

    1
    2
    >>> [x * x for x in range(1, 11)]
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  4. map()函数接收两个参数,一个是函数,一个是序列,·map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回

    1
    2
    3
    4
    5
    >>> def f(x):
    ... return x * x
    ...
    >>> map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
    [1, 4, 9, 16, 25, 36, 49, 64, 81]

Comments

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×