有c/c++的基础快速上手python总结

Python语法

Python基础

数据类型和变量

  • python没有 || && 等,用and, or, not

字符串和编码

  • ASCII(仅英文) ,Unicode(所有语言编码,但是耗一倍空间) ,UTF-8 (前两者折中,可变长编码,建议使用)

  • ord()函数获取字符的整数表示 ,chr()函数把编码转换为对应的字符

    >>> ord('A')
    65
    >>> ord('中')
    20013
    >>> chr(66)
    'B'
    >>> chr(25991)
    '文'
  • 要计算str包含多少个字符,可以用len()函数:

    >>> len('ABC')
    3
    >>> len('中文')
    2
  • %运算符就是用来格式化字符串的

    print('%2d-%02d' % (3, 1))
    print('%.2f' % 3.1415926)
  • 另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}{1}……

    >>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
    'Hello, 小明, 成绩提升了 17.1%'

列表list和元组tuple

  • len()函数可以获得list元素的个数

    >>> len(classmates)
    3
  • 还可以用-1做索引,直接获取最后一个元素:

    >>> classmates[-1]
    'Tracy'

    以此类推,可以获取倒数第2个、倒数第3个:

    >>> classmates[-2]
    'Bob'
    >>> classmates[-3]
    'Michael'
    >>> classmates[-4]
  • list是一个可变的有序表,所以,可以往list中追加元素到末尾:

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

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

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

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

    扫描二维码关注公众号,回复: 2892815 查看本文章
    >>> classmates.pop()
    'Adam'
    >>> classmates
    ['Michael', 'Jack', 'Bob', 'Tracy']

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

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

    要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:

    >>> classmates[1] = 'Sarah'
    >>> classmates
    ['Michael', 'Sarah', 'Tracy']
  • tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改

    classmates = ('Michael', 'Bob', 'Tracy')
  • 只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:

    >>> t = (1,)
    >>> t
    (1,)

条件判断

  • if,else后需要加冒号

    if age >= 18:
      print('adult')
    elif age >= 6:
      print('teenager')
    else:
      print('kid')
  • Python提供了int()函数来把str转换成整数

    s = input('birth: ')
    birth = int(s)

循环

  • for循环

    names = ['Michael', 'Bob', 'Tracy']
    for name in names:
      print(name)
  • Python提供一个range()函数,可以生成一个整数序列,再通过list()函数可以转换为list。比如range(5)生成的序列是从0开始小于5的整数:

    >>> list(range(5))
    [0, 1, 2, 3, 4]

    range(101)就可以生成0-100的整数序列,计算如下:

    sum = 0
    for x in range(101):
      sum = sum + x
    print(sum)
  • while循环,不加括号,加冒号

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

字典dict和集合set

  • dict

    >>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
    >>> d['Michael']
    95
  • 把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:

    >>> d['Adam'] = 67
    >>> d['Adam']
    67
  • 由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:

    >>> d['Jack'] = 90
    >>> d['Jack']
    90
    >>> d['Jack'] = 88
    >>> d['Jack']
    88
  • 通过in判断key是否存在:

    >>> 'Thomas' in d
    False
  • 通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:

    >>> d.get('Thomas')
    >>> d.get('Thomas', -1)
    -1
  • 删除一个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是用空间来换取时间的一种方法。

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

  • 要创建一个set,需要提供一个list作为输入集合:

    >>> s = set([1, 2, 3])
    >>> s
    {1, 2, 3}
  • 通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:

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

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

    >>> s.remove(4)
    >>> s
    {1, 2, 3}
  • set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:

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

函数

调用函数

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

    >>> int('123')
    123
    >>> int(12.34)
    12
    >>> float('12.34')
    12.34
    >>> str(1.23)
    '1.23'
    >>> str(100)
    '100'
    >>> bool(1)
    True
    >>> bool('')
    False

定义函数

  • 空函数如果想定义一个什么事也不做的空函数,可以用pass语句:

    def nop():
      pass

    pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。

    pass还可以用在其他语句里,比如:

    if age >= 18:
      pass

    缺少了pass,代码运行就会有语法错误。

  • 数据类型检查可以用内置函数isinstance()实现:

    def my_abs(x):
      if not isinstance(x, (int, float)):
          raise TypeError('bad operand type')
      if x >= 0:
          return x
      else:
          return -x

函数的参数

  • 必选参数在前,默认参数在后

  • 可变参数:

    要定义出这个函数,我们必须确定输入的参数。由于参数个数不确定,我们首先想到可以把a,b,c……作为一个list或tuple传进来,这样,函数可以定义如下:

    def calc(numbers):
      sum = 0
      for n in numbers:
          sum = sum + n * n
      return sum

    但是调用的时候,需要先组装出一个list或tuple:

    >>> calc([1, 2, 3])
    14
    >>> calc((1, 3, 5, 7))
    84

    如果利用可变参数,调用函数的方式可以简化成这样:

    >>> calc(1, 2, 3)
    14
    >>> calc(1, 3, 5, 7)
    84

    所以,我们把函数的参数改为可变参数:

    def calc(*numbers):
      sum = 0
      for n in numbers:
          sum = sum + n * n
      return sum

    *nums表示把nums这个list的所有元素作为可变参数传进去。

  • 如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:

    >>> nums = [1, 2, 3]
    >>> calc(nums[0], nums[1], nums[2])
    14

    这种写法当然是可行的,问题是太繁琐,所以Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:

    >>> nums = [1, 2, 3]
    >>> calc(*nums)
    14

    *nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。
    有毒

  • 命名关键字参数

    如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收cityjob作为关键字参数。这种方式定义的函数如下:

    def person(name, age, *, city, job):
      print(name, age, city, job)

    和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符**后面的参数被视为命名关键字参数。

猜你喜欢

转载自blog.csdn.net/yyt_1995/article/details/81868783