Python入门学习记录

时间:2022-01-05 22:02:42

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=20
      if age>=18
      print 'your age is',age
      print 'adult'

      加上else的写法:

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

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

      age = 3
      if 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 =0
      for x in range(101):
      sum=sum+x
      print sum
    4. 另外一种循环是while循环,满足条件就不断循环,不满足就退出。(和java里类似)例如计算出100以内的所有奇数和:

      sum = 0
      n = 99
      while n > 0:
      sum = sum + n
      n = n - 2
      print 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 d
    False

    或者通过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是字符串。

总结

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