zoukankan      html  css  js  c++  java
  • Python 基础(二)

    原文链接:http://www.one2know.cn/python2/

    • 输入一个字符串,以列表输出大写,如果包含整数,转为整型
    str = input()
    list = []
    for i in str:
        if i.isdecimal() == True:
            list.append(int(i))
        else:
            list.append(i.upper())
    
    • 判断字符的类型:字母,数字,空格
      char.isalpha()
      char.isdigit()
      char.isspace()
    • 两个矩阵相加
    m = [[1,2,3],[4,5,6],[7,8,9]]
    n = [[1,2,3],[4,5,6],[7,8,9]]
    num = [m[i][j] + n[i][j] for i in range(3) for j in range(3)]
    
    • 列表推导式
    list = []
    for i in range(3,10):
        if i % 2 == 0:
        list.append(i)
    

    可简写成:
    list = [i for i in range(3,10) if i % 2 == 0]

    • 嵌套列表推导
    m = [[1,2,3],
            [4,5,6],
            [7,8,9]]
    list = []
    for i in m:
        for j in i:
            list.append(j)
    

    可简写成:
    list = [j for i in m for j in i]

    • 打印菱形
    for i in range(1,8,2):
        print(('*'*i).center(7))
    for i in range(5,0,-2):
        print(('*'*i).center(7))
    
    • 判断回文数:当成str比较是否相同就行了,用数字麻烦
      也可以使用切片,比较其与反切是否相等(num == num[::-1])
    • 四个数字1,2,3,4组成的多少互不相同且无重复的数字
    for x in range(1,5):
        for y in range(1,5):
            for z in range(1,5):
                if x != y and x != z and y != z:
                    print(x * 100 + y * 10 + z)
    

    用列表推导式:
    num = [x*100+y*10+z for for x in range(1,5) for y in range(1,5) for z in range(1,5) if x != y and x != z and y != z]

    • 字典推导式
    names = ['tom','jerry','jack']
    name = {k:v for k,v in enumerate(names)}
    print(name)
    

    输出为:{0:'tom',1:'jerry',2:'jack'}

    • 冒泡排序:将2,6,4,9,3,10从大到小排列
    list = [2,6,4,9,3,10]
    for i in range(len(list)-1):
        for j in range(len(list)-1-i):
            if list[j] < list[j+1]:
                list[j],list[j+1] = list[j+1],list[j]
    print(list)
    
    • 函数的定义
    def function_name([参数](形参)):
        #函数说明
        要封装的代码块
    function_name([参数(实参)]) #调用函数
    
    • 可以将函数名赋值给另一个变量,相当于起个别名
    • 函数的参数要一一对应,或者用关键字参数
    def f(x,y):
        print(x-y)
    f(2,1)
    f(y=1,x=2)
    
    • 不定长参数
    def getInfo(name,address,*args,**args2):
        #*args 是接受所有未命名的参数(关键字)
        #**args2 是接受所有命名的参数(带关键字的)
        print('我叫%s,来自%s'%(name,address))
        print(args) #元组类型
        print(args2) #字典类型
    getInfo('tom','china','a','b','c',age = 18)
    

    输出:
    我叫tom,来自china
    ('a','b','c')
    {'age' : 18}

    • 可变参数与不可变参数
    def fun(*args):
        args = hello
        print(args)
    str = 'baby'
    fun(str1) #输出hello
    print(str1) #输出baby,因为string是不可变类型,若为可变类型(如list),则参数也会被修改
    
    • return之后的代码不会执行,例如
    def sum(x,y):
        return x+y #将结果回到调用的位置上
        print(x+y) #不会执行
    print(sum(1,2))
    
    • yield生成器,生成一个迭代器
    def getNum(n):
        i = 0
        while i <= n:
            #print(i) #打印i
            #return i #返回第一个i(即0),结束函数的运行
            b = yield i #将函数变成一个generator,直接在yield处暂停了,没有赋值操作
            i += 1
    #getNum(5)
    print(getNum(5))
    a = getNum(5) 
    for i in a:
        print(i)
    
    • a = [ x for x in range(100000)]会占用很大内存
      a = (x for x in range(100000))生成迭代器,用next(a)一次输出一个数据
    • 迭代器:能被next()不断调用返回下一个对象
      可迭代对象:list string dict ≠ 迭代器
    list = [1,2,3,4]
    a = iter(list)
    print(a)
    print(next(a))
    
    • isinstance(s,str)判断数据类型,相当于type(s) == str
    • 变量的作用域
      局部变量:声明在函数内部的是局部变量,外部无法使用
      全局变量:大家都能使用
    • 修改全局变量:
      对于不可变类型:在函数内用global修改为全局变量
      对于可变类型::可以不使用global声明
    def fun1():
        global a
        a = 1
        print(a)
    def fun2():
        global a
        a = 2
        print(a)
    a = 3
    fun1()
    fun2()
    print(a)
    

    输出为:
    1
    2
    2

    • 递归函数
    def main(n):
        print(n)
        if n == 3:
            print('start')
        else:
            main(n+1)
        print(n)
    main(1)
    

    输出:
    1
    2
    3
    'start'
    3
    2
    1
    分析:
    main(1)=print(1)+main(2)+print(1)=print(1)+print(2)+main(3)+print(2)+print(1)=print(1)+print(2)+print(3)+print('start')+print(3)+print(2)+print(1)

    • 匿名函数:lambda [参数](可有可无): 表达式(相当于return xx)
      lambda内部一般只能放简单的表达式,特殊地,s = lambda x,y : x if x > y else y
      没有参数:s = lambda : 'abc';print(s())
      一个参数:s = lambda x : x*2;print(s(3))
      多个参数:s = lambda x,y : x+y;print(s(1,2))
  • 相关阅读:
    洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II
    洛谷 P3654 First Step (ファーストステップ)
    洛谷 P1223 排队接水
    洛谷 【P1252】马拉松接力赛
    codevs 4927 线段树练习5
    洛谷 P1678 烦恼的高考志愿
    初识 线段树
    开学第一测
    洛谷 P1531 I Hate It
    CSS3 过渡
  • 原文地址:https://www.cnblogs.com/peng8098/p/python_basis_2.html
Copyright © 2011-2022 走看看