• python基础讲义第一弹


    前言:

    本系列文章将会对有编程经验的跨语言编程爱好者提供, 而来也是为了自己熟悉这门语言做下笔记。 所需了解的内容, 基础语法应用、迭代器, 常见数据结构, 面向对象编程, 少量设计模式等。

    第一弹内容:

    安装python

    这里有一千种方法,从略, 但是本系列以python3 讲解。

    了解数据类型和编码,输入输出

    区分语言的运用,和基础数据类型的跨越, 输入输出(print . lable = input())

    了解基础的内置数据结构

    这里主要讲解tuple, list, set , dict, deque

    基础数据结构无非就是对应到了(),[],{}即可。
    元组直接用(),可以用其他数据结构直接嵌用。例如list()
    list 为链表集合结构, 相当于Java 的ArrayList, C++的Vector。
    set 无重集合结构。
    dict 为字典结构, 对应Java的是Map。

    ##举例说明
    >>>a = (1,2,3); type(a)
    >>>b = tuple(a) ; type(b)
    >>>c = set(1,1,2,3,4);type(c)
    >>>d = {'Name':;'Actanble', 'IQ':223};type(d)
    ##表示方法有很多种,以后用到了再说明。

    简单的高级特性

    ##切片 ::就是取其中的一部分元素 [start :end]的功能
    
    ##迭代 :: 雷速于java的迭代器功能后的加强for循环
    for i in range(10):
        print (2*i)
    
    ##列表生成式
    l = [2*i for i in range(10) if(i>4)]
    print (i) ##输出符合条件i的列表推导式
    ##生成器 :: 只会操作到开始一部分元素的一个生成器
    g = (x * x for x in range(10))
    while(1):
       print (next(g))
    ###应用2
    def fib(max):
        n, a, b = 0, 0, 1
        while(n < max):
            print(b)
            a, b = b, a + b
            n = n + 1
        return 'complete'
    #####当然fib 可以直接用递归返回, 或者用另外一个数组存储返回即可。 [].append()
    ##迭代器
    ##可迭代对象既是实现了 iterable借口的对象, 例如集合, string 等。
    from collections import Iterable
    print(isinstance(100, Iterable))  ##是不是迭代类型, instance(110,int)是不是整形。
    #同样 isinstance(iter([]), Iterator)判断是不是迭代器类型 

    函数式编程

    简而言之就是利用指针特性完成函数相关性能的相关编程。
    map 和 reduce , 简易lamda应用
    yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator

    f = abs
    def add(x, y, f):
        return f(x) + f(y)
    
    print(add(2,3,f))
    
    ##map单元映射
    def g(x):
        return x^2 + x -1 
    r = map(g, [1, 2, 3, 4, 5, 6, 7, 8, 9])
    print (r)
    
    ##reduce 应用
    from functools import reduce
    
    def char2num(s):
        return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
    
    def str2int(s):
        return reduce(lambda x, y: x * 10 + y, map(char2num, s))
    
    

    fiter 综合练习

    def _odd_iter():
        n = 1
        while True:
            n = n + 2
            yield n
    
    def _not_divisible(n):##定义一个筛选函数:
        return lambda x: x % n > 0
    
    def primes():
        yield 2
        it = _odd_iter() # 初始序列
        while True:
            n = next(it) # 返回序列的第一个数
            yield n
            it = filter(_not_divisible(n), it) # 构造新序列
    
    # 打印1000以内的素数:
    for n in primes():
        if n < 1000:
            print(n)
        else:
            break
    ## 其实 l = [2*i + 1 for i in range(max/2+1)] 的即可, 但是了解这个过程中指针操作对象, 操作的是什么, 这个过程。 

    模块编程

    自定义模块示例, 其他略

    import sys
    
    def test():
        args = sys.argv
        if len(args)==1:
            print('Hello, world!')
        elif len(args)==2:
            print('Hello, %s!' % args[1])
        else:
            print('Too many arguments!')
    
    if __name__=='__main__':
        test()

    另外第三方模块只是看做一个大类的集合即可即可, 后面经常用到不加赘述

    比如以前我的博客中经常用到 numpy, os, pandas , scanpy, bootstrap, request等。都属于模块。

    理解作用域的修饰符, xx ( public )和 _x(pravete); oop编程再详解。此处略, 补上一个简单的应用举例, 模块内部调用。

    
    def _private(name):
        return 'Hello, %s' % name
    
    def _private_2(name):
        return 'Hi, %s' % name
    
    def greeting(name):
        if len(name) > 3:
            return _private(name)
        else:
            return _private_2(name)

    后记

    关于python基础要是有C++或者Java基础都会很容易理解, 其中只要是指针的操作和高级特性麻烦一点, 但是也都不难理解, 第二代将会全面展开面向对象编程, 封装、继承、多态。 另外再补上 IO 和 正则表达式,

    第二弹内容

    面向对象

    第三弹内容

    IO, 线程进程、错误调试、

    正则, 常用内建模块(相当于了解api, Java的常见类学习)

    第四弹

    编程技术升级: 网络编程、web开发、访问数据库、SMTP协议的邮件收发、异步IO。

    参考讲义

    廖雪峰的Python教程

  • 相关阅读:
    Number Sequence ----HDOJ 1711
    B. Berland Bingo
    迷宫城堡--HDOJ 1269(Tarjan)
    迷宫城堡--HDOJ 1269
    前向星,链式前向星
    linux下建立无线wifi------简单实用!
    leetcode187- Repeated DNA Sequences- medium
    leetcode173- Binary Search Tree Iterator- medium
    leetcode170- Two Sum III
    leetcode167- Two Sum II
  • 原文地址:https://www.cnblogs.com/actanble/p/6713430.html
Copyright © 2020-2023  润新知