zoukankan      html  css  js  c++  java
  • python 学习

            切片:

           [start_index:  stop_index:  step]

                          start_index:  stop_index   参数都可以省略        默认  全部  但必须有一个  :

                        demo: 

            start_index和stop_index的绝对值是可以大于length的。比如下面两个例子:?

    1
    2
    3
    4
    5
    >>> alist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> alist[-11:11]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> alist[11:-11:-1]
    [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

          另外start_index和stop_index都是可以省略的,比如这样的形式 alist[:], 被省略的默认由其对应左右边界起始元素开始截取。

          看一下具体的实例:?

    1
    2
    3
    >>> alist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> alist[:]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    函数默认参数:  陷阱

    def qqxing(k,l = {}):
    # l.append(1)
    l[k] = 'v'
    print(l)

    qqxing(1) #[1]
    qqxing(2) #[1,1]
    qqxing(3) #[1,1,1]

    # 如果默认参数的值是一个可变数据类型,
    # 那么每一次调用函数的时候,
    # 如果不传值就公用这个数据类型的资源




    def func(l):
    return l[1::2] #切片 从 第一个, 从1 开始 不是 0 2 4
    print(func([1,2,3,4,5]))



    def func(l):
    return l[:2]

    print(func([1,2,3,4]))



    ######## 全局变量变量名大写
    ######## 局部变量变量名小写


    # 优先读取局部变量,能读取全局变量,无法对全局变量重新赋值 NAME=“fff”,
    # 但是对于可变类型,可以对内部元素进行操作
    # 如果函数中有global关键字,变量本质上就是全局的那个变量,可读取可赋值 NAME=“fff”
    高阶函数
    一   #filter函数
    movie_people=['alex_sb','wupeiqi_sb','linhaifeng','yuanhao_sb']
    def sb_show(n):
    return True
    def sb_show(str):
    # return str.endswith('sb');
    #
    # print(list(filter(sb_show,movie_people))) ####注意 sb_show是变量 不是字符串





    二、map函数
    num_l = [1,2,10,5,3,7]
    # print(list(map(lambda x:x+1,num_l))


    def add_one(x):
    return x+1



    print(list(map(add_one,num_l)) ####注意 add_one 是变量 不是字符串
    三、reduce函数,  py3 要自己引入,因为已经删除内置
    from functools import reduce

    def add(x,y):
    return x + y
    print(reduce(add,list(range(1,100))))

     匿名函数;没有实际名字的函数。

    func=lambda x:x+'_sb'
    res=func(name)
    print('匿名函数的运行结果',res)
    #处理序列中的每个元素,得到的结果是一个‘列表’,该‘列表’元素个数及位置与原来一样
    # map()

    #filter遍历序列中的每个元素,判断每个元素得到布尔值,如果是True则留下来

    people=[
    {'name':'alex','age':1000},
    {'name':'wupei','age':10000},
    {'name':'yuanhao','age':9000},
    {'name':'linhaifeng','age':18},
    ]
    print(list(filter(lambda p:p['age']<=18,people)))


    #reduce:处理一个序列,然后把序列进行合并操作
    from functools import reduce
    print(reduce(lambda x,y:x+y,range(100),100))
    print(reduce(lambda x,y:x+y,range(1,101)))





    # 文件处理
    # 打开文件
    #open('路径','打开方式','指定编码方式')
    # 打开方式 r w a r+ w+ a+ b

    # ‘r+’读+追加模式,可读可写,
    # ‘w+’写读模式,打开创建新文件,因此需要先把内容写进去在读
    # ‘a’追加模式,若打开的是已有文件则直接对已有文件操作




    文件打开,替换 

    with open('小护士班主任',encoding='utf-8') as f,open('小护士班主任.bak','w',encoding='utf-8') as f2:
    for line in f:
    if '星儿' in line: # 班主任:星儿
    line = line.replace('星儿','啊娇')
    f2.write(line)
    f=open('test22.py','ab') #b的方式不能指定编码
    f.write('杨件'.encode('utf-8'))

    open('a;ltxt','wt')
























    # print(f.tell())
    # f.readline()
    # print(f.tell())

    # f.seek(1)
    # print(f.tell())
    # print(f.readlines())
    # f.seek(3)
    # print(f.tell())
    # print(f.read())

    # data=f.read(1)
    # print(data)

    # f.truncate(10)


    # f.flush() #讲文件内容从内存刷到硬盘
    #
    # f.closed #文件如果关闭则返回True
    #
    # f.encoding #查看使用open打开文件的编码
    # f.tell() #查看文件处理当前的光标位置
    #
    # f.seek(3) #从开头开始算,将光标移动到第三个字节
    # f.truncate(10) #21以写方式打开,但是w和w+除外
    #
    # f=open('d.txt','r',newline='')
    #
    # data=f.readline().encode('utf-8')
    # print(data)
    # print(f.tell())



    f=open('日志文件','rb')

    # for i in f.readlines():
    # print(i)

    #循环文件的推荐方式
    # for i in f:
    # print(i)

    for i in f:
    offs=-10
    while True:
    f.seek(offs,2)
    data=f.readlines()
    if len(data) > 1:
    print('文件的最后一行是%s' %(data[-1].decode('utf-8')))
    break
    offs*=2















                  

  • 相关阅读:
    代码块&继承&final关键字
    Java基础
    我的学习笔记
    CF743C 题解
    洛谷P4180 题解
    洛谷P3402 题解
    洛谷P3919 题解
    Noi.ac#30 题解
    Noi.ac #65题解
    Noi.ac #51题解
  • 原文地址:https://www.cnblogs.com/ldms/p/10450698.html
Copyright © 2011-2022 走看看