Python入门学习记录

来源:互联网 发布:复杂网络社区发现研究 编辑:程序博客网 时间:2024/06/08 19:50

Python入门学习记录from廖雪峰官网

前言:
目标了解python,并能写简单的脚本,持续学习中。

  1. 整数除法结果只去整数部分,想让结果变得精确就把一个数改为浮点数即可

  2. 在字符串内部%s表示字符串替换,%d表示用整数替换,%%可以转义后面的

  3. list一种有序集合,

    1. classmates = [‘Michael’, ‘Bob’, ‘Tracy’],
    2. 用这个len(classmates)可以得出列表长度。
    3. classmates[0] 利用索引来访问对应位置的元素
    4. classmates[-1] 获取最后一个位置的元素,也可以用size-1来获得最后一个元素(小心索引越界);classmates[-2]可以倒推获取元素。
    5. classmates.append(‘Adam’) 可以追加元素
    6. classmates.insert(1, ‘Jack’) 插入到指定位置的元素
    7. classmates.pop() 删除末尾元素;classmates.pop(1)删除指定位置上的元素
    8. classmates[1] = ‘Sarah’ 直接替换某个位置上的元素
    9. L = [‘Apple’, 123, True] list里面的元素也可以类型不一样
    10. list里面也可以有另外的list 数据获取list[2][2]
    11. list=[] 空列表 长度为0

  4. tuple 一种有序列表,一点初始化就不能修改了。

    1. tuple定义的时候,元素就必须被初始化,t=(1,2)。(也可以定义一个空的如:t=())
    2. 定义一个元素的话t=(1) 输出为自然数1;定义一个元素的tuple的话就要加一个逗号来区分,t=(1,)
    3. t=(‘a’,’b’,[‘a’,’b’]) 改变元素 t[2][0]=’x’ t[2][1]=’y’ 打印结果为 (‘a’,’b’,[‘x’,’y’]) 结论:不变指的是指向不变,上面改变的是list里面的元素,并不会影响list在内存中的地址。
  5. 条件判断和循环

    1. if语句的使用:

      age=20if age>=18print 'your age is',age    print 'adult'

      加上else的写法:

      age=20if age>=18print 'your age is',age    print 'adult'else:    print 'your age is',age    print 'teenager'

      上面的写法可以用elif替换:

      age = 3if age >= 18:  print 'adult'elif age >= 6:  print 'teenager'else:  print 'kid'
    2. if语句简写:

      if x:  print 'True'

      只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False

    3. 循环有两种:1.for…in 依次把list tuple中每个元素迭代出来

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

      循环来计算1-100的和:

      sum =0for x in range(101):sum=sum+xprint sum
    4. 另外一种循环是while循环,满足条件就不断循环,不满足就退出。(和java里类似)例如计算出100以内的所有奇数和:

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

      不断自减,直到-1不满足条件时退出。

  6. raw_input读取用户输入

    raw_input读取的内容总是已字符串返回,所以字符串自然是不能和整数比较的。

    可以用int转换,如下:

    birth = int(raw_input('birth: '))
  7. 使用ditc和set

    1.ditc相当于其他语言中的map

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

    把数据放入dict的方法,除了初始化时指定外,可以根据key放入

    >>> d['Adam'] = 67>>> d['Adam']67

    一个key只能对应一个value所以后面重复放入,会把以前的value覆盖,如果查找的key不存在就会报错,为了防止报错,进行如下判断

    >>> 'Thomas' in dFalse

    或者通过ditc自身的方法

    >>> d.get('Thomas')>>> d.get('Thomas', -1)-1

    注意:返回None的时候Python的交互式命令行不显示结果。

    删除一个key的时候,使用pop(key),value也回随之消失

    请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。

    注意和list比较,dict有以下几个特点:

    1. 查找和插入的速度极快,不会随着key的增加而变慢;
    2. 需要占用大量的内存,内存浪费多。

    而list相反:

    1. 查找和插入的时间随着元素的增加而增加;
    2. 占用空间小,浪费内存很少。

    所以,dict是用空间来换取时间的一种方法。

    特别注意的是dict的key必须是不可变的对象。

    整数和字符串都是不可变的,可以放心做key,而list是可变的就不能做key了。

    2.set类似于java中的set系类,key不可以重复

    set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

    创建set需要提供一个list作为输入集合,显示的顺序不表示set是有序的,还有就是重复元素会被过滤

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

    通过add(key)添加,不过并没有效果,所以也没啥用。

    >>> s = set([1, 2, 33])>>> s{1, 2, 3}>>> s.add(3)>>> s{1, 2, 3}

    通过remove(key)可以移除元素

    >>> s.remove(4)>>> s{1, 2, 3}

    两个set可以做数学上的集合操作

    >>> s1 = set([1, 2, 3])>>> s2 = set([2, 3, 4])>>> s1 & s2{2, 3}>>> s1 | s2{1, 2, 3, 4}

    set和dict一样不能放入可变对象作为key。

所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。

使用key-value存储结构的dict在Python中非常有用,选择不可变对象作为key很重要,最常用的key是字符串。

总结

和其他的后台语言有些类似,但是更灵活,值得学习,作为第二门语言。