• Python 入门学习笔记


    安装和运行

    官网下载安装包
    https://www.python.org/downloads/mac-osx/
    下载完直接安装即可

    运行
    打开 terminal,输入命令 python,进入 python 环境(类似输入 node 进入 node 环境)

    退出 python 环境

    exit()

    >>> python
    Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 12:01:12) 
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 1 + 2
    3
    >>> exit()

    print 语句

    打印多个字符串,用逗号隔开,就可以连成一串输出

    print 'This is Tuesday', 'I am study Python' 

    注释

    # print 'This is a comment'

    raw 字符串

    内部字符串不需要转义,类似 html 中 pre 标签的功能

    print r'$%^&*(_)(*&^%$/'

    多行字符串

    print ''' Line 1
    line2
    line3 '''

     list (类似 js 中数组)

    >>> arr = [1, 2, 3, 'abc', '你好']
    >>> arr
    [1, 2, 3, 'abc', '你好']

    list 元素的访问和 js 数组类似

    arr[3] # 'abc'

    倒序访问 list 元素

    arr[-1] # '你好'

    在 list 末尾添加元素

    list.append('new item')

    在 list 指定位置添加元素

    list.insert(3, 'new item') # 在 index = 3 的位置上添加新元素,后面的元素依次后移一位

    list 中删除元素

    list.pop(index)
    list.pop() # 删除 list 中最后一个元素
    list.pop(2) # 删除 list index = 2 的元素

     tuple(元组、数组)

    类似 list 的有序列表,但是不可变,相当于常量类型的 list

    t = ('Apple', 'Peach', 'Banana')

    tuple 访问元素的操作和 list 一致,但是对列表元素不能执行 append、 insert 和 pop 操作

    创建tuple

    t = ()

    创建包含一个元素的tuple
    不能写成 t = (1)  # 1
    而应该是 t = (1,) # 添加一个逗号来避免歧义,明确这是一个 tuple

    if 语句

    age = 20
    if age >= 18:
    print 'ur age is', age

    代码缩进规则

    具有相同缩进的代码被视为代码块,不要混合使用 tab 和空格
    if 语句后面跟表达式,并用冒号:表示代码块开始

    if-else(else 后面要跟冒号:)

    if name == 'wangxi':
      print 'hello wangxi'
    else:
      print 'hello strange'
    # hello wangxi 

    if-elif-else

    if age >= 18:
        print 'adult'
    elif age >= 6:
        print 'teenager'
    elif age >= 3:
        print 'kid'
    else:
        print 'baby'

     for 循环

    for item in list:
        print item

     dict

    dictionary,字典,类似 js 对象,使用 key-value 键值对来表示元素的对应关系s

    d = {
        'name': 'wangxi',
        'age': 25
    }
    # { 'name': 'wangxi', 'age': 25 }

     len(dict)

    计算 dict 的长度

    len(d) # 2

     访问dict

    dict['name'] # 'wangxi'
    dict.get('name') # 'wangxi'

     判断 key 是否存在

    if 'name' in d:
      print d['name'] # 'wangxi'

     获取 dict 的 key

    for key in d:
        print key
    # name
    # age

     获取 dict 的 value

    for value in d.values():
        print value
    # 'wangxi'
    # 25

     itervalues() 不会转换 dict,在迭代过程中依次从 dict 中取出 value,而 values() 会将 dict 转换成 包含 value 的 list

    for value in d.itervalues():
        print value
    # 'wangxi'
    # 25

     同时获取 key 和 value

    for key, value in d.items():
        print key, ':', value
    # name: 'wangxi'
    # age: 25

     dict 的特点以及和 list 的比较

    1.  查找速度快,但是占用内存大,list 则相反
    2. key 是唯一的,不能重复,list 中的元素是可以重复的
    3. key-value 是没有顺序的,list 则是有顺序的
    4. key 是不可变的(字符串、整数、浮点数等)

    set
    和 JS es6 中的 set 几乎一样
    可以理解为元素唯一的不可重复的数组
    如果创建或修改的时候出现重复元素,则会自动过滤

    s = set([1, 2, 2, 3, 3, 4]) # set([1, 2, 3, 4])

     特点

    1. set 存储的元素是无序的,所以不能用索引来访问 set 元素
    使用 in 操作符判断元素是否在 set 中 (es6 中使用 has() 方法)

    2 in s # true

    2. set 的元素是不可变的

    遍历set(for...in...)

    for item in s
        print s

    更新 set
    添加 add()

    s.add('wangxi') # set([1, 2, 3, 4, 'wangxi'])

     删除 remove() # es6 中使用 delete

    内置函数
    abs()
    cmp(1, 2)

    函数
    def functionName(x):
      pass

    函数返回多个值

    def getUserInfo (name, age):
        return name, age
    getUserInfo('wangxi', 25) 
    # ('wangxi', 25) 返回值是 tuple 类型

     递归函数

    def fact(n):
        if n == 1:
            return 1    
        return n * fact(n)

     指定默认参数(和 es6 用法相同)

    定义可变参数

    def fn(*args):
        print args
    
    fn(1, 2, 2, 3) # 打印的是 args 的 tuple (1, 2, 2, 3)

     对 list 或 tuple 或 字符串进行切片

    L = range(1, 100) # 生成 1~100 的list
    L[1: 3] # [2, 3]
    L[:3] # [1, 2, 3] 相当于 L[0: 3] 开始是 0 可以省略
    L[:] # 从头到尾选取元素,相当于复制一个新的 list
    L[::3] # 从 0 开始,每三个元素选取一个 [1, 4, 7...]
    L[2::3] # 从第三个元素开始,每三个元素选取一个 [3, 6, 9...]
    'ABCDEFG'[1:3] # 'BC'

     迭代循环

    for x in xrange(1,10):
        passs

     索引迭代

    L = ['apple', 'pear', 'strawberry', 'grape']
        for index, name in enumerate(L):
            print index, '-', name
    # 0 - apple
    # 1 - pear
    # 2 - strawberry
    # 3 - grape
        

     生成列表

    生成 [1x2, 3x4, 5x6, 7x8, ..., 99x100]

    [x * (x + 1) for x in range(1, 100, 2)]

     条件过滤

    计算列表中偶数项的平方

    [x * x for x in range(1, 100) if x % 2 == 0]
    # [4, 16, 36, 64, ...]

     多层表达式

    L = []
    for m in 'ABC':
      for n in '123':
        L.append(m + n)

    转换成

    [m + n for m in 'ABC' for n in '123']
    # ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
  • 相关阅读:
    [poj] 3068 "Shortest" pair of paths || 最小费用最大流
    [poj] 3686 The Windy's || 最小费用最大流
    [poj] 1235 Farm Tour || 最小费用最大流
    [poj] 3281 Dining || 最大流
    [poj] 3041 Asteroids || 最小点覆盖=最大二分图匹配
    luogu P1072 Hankson 的趣味题
    二分图最佳匹配
    181106 solution
    luogu P2216 [HAOI2007]理想的正方形
    luogu P4362 [NOI2002]贪吃的九头龙
  • 原文地址:https://www.cnblogs.com/wx1993/p/7560232.html
Copyright © 2020-2023  润新知