zoukankan      html  css  js  c++  java
  • python

    一、一些内置函数

      1、revsered  翻转,返回的是迭代器 

    # 将 s 倒置
    s = '不是上海自来水来自海上'
    # 方法一
    print(s[::-1])
    # 方法二
    s1 = reversed(s)
    i = ''
    for el in s1:
      i +=el
      print(i)

        2、slice 切片 

    lis = ['nishi','woshi','shuia','benjim']
    s = slice(1,3)
    print(lis[s])

      3、format  

    # 格式化输出
    s = "我叫{name},我想去{adress},我喜欢{hobby}.".format(name='zhangmeng',adress='上海',hobby='dance')
    print(s)
    
    
    # 字符串
    print(format('test', '<20')) # 左对齐
    print(format('test', '>20')) # 右对齐
    print(format('test', '^20')) # 居中
    # 数值
    print(format(3, 'b')) # 二进制
    print(format(97, 'c')) # 转换成unicode字符
    print(format(11, 'd')) # 十进制
    print(format(11, 'o')) # 八进制
    print(format(11, 'x')) # 十六进制(小写字母)
    print(format(11, 'X')) # 十六进制(大写字母)
    print(format(11, 'n')) # 和d一样
    print(format(11)) # 和d一样
    # 浮点数
    print(format(123456789, 'e')) # 科学计数法. 默认保留6位小数
    print(format(123456789, '0.2e')) # 科学计数法. 保留2位小数(小写)
    print(format(123456789, '0.2E')) # 科学计数法. 保留2位小数(大写)
    print(format(1.23456789, 'f')) # 小数点计数法. 保留6位小数
    print(format(1.23456789, '0.2f')) # 小数点计数法. 保留2位小数
    print(format(1.23456789, '0.10f')) # 小数点计数法. 保留10位小数
    print(format(1.23456789e+10000, 'F')) # 小数点计数法.

      4、type() 返回类型    ord()  输入字符找字符编码的位置     chr()  输入位置找出对应的字符    ascii()判断给出的信息是否是ascii 

    for i in range(65536):
        print(chr(i), end="")
    二、递归
       函数自己调用自己,递归的入库(参数)  和出口(return)
    语法:
    def func():
        print('我是递归')
        func()
    
    func() # 官方显示最多到1000.但不会跑到1000,实际到998
    # 树形结构的遍历
    
    import os
    def func(lujing, n):
        lis = os.listdir(lujing) # 打开文件夹,列出文件夹内的所有文件名
        for el in lis: # el 为文件的名字
        # 还原文件路径
        path = os.path.join(lujing,el)
        if os.path.isdir(path):# 判断路径是否是文件夹
            print('*' * n,el) # 显示文件夹的名字
            func(path, n+1) # 再来一次
        else:
            print('/t'*n,el) # 显示文件
    
    func('f:/a', 0)
    import os
    def func(lujing, n):
        lis = os.listdir(lujing ) # 打开文件夹,列出文件夹内的所有文件名
        for el in lis: # el为文件名
    # 还原文件的路径
        path = os.path.join(lujing, el)
        if os.path.isdir(path): # 判断路径是否是文件夹
            print('*'* n, el) # 显示文件夹名称
            func(path, n+1) # 再来一次
        else:
            with open(path,mode='wb') as f: # 打开文件,都写入内容
                f.write(b'123456')
                  print('/t'*n, el) # 显示文件
    func('F:/a',0)
    三、二分法
    掐头结尾取中间,查找效率非常高,二分法查找的主要作用就是查找元素
    # 二分法查找
    lst = [1,4,6,7,9,21,23,45,67,87,65,43,89]
    n = int(input('请输入一个数:'))
    lst = sorted(lst)
    # print(lst)
    left = 0
    right = len(lst)-1
    while left <= right:
        mid = (left + right)//2
        if n > lst[mid]:
            left = mid+1
        elif n < lst[mid]:
            right = mid -1
         else:
            print("存在")
            break
    else:
    print('不存在')
    # 递归 切割列表
    
    def func(n,lst):
        left = 0
        right = len(lst)-1
        if lst != []:
            mid = (left+right)//2
             if n>lst[mid]:
                func(n,lst[mid+1:])
            elif n < lst[mid]:
                func(n,lst[:mid])
            else:
                print("找到了")
                return
        else:
            print("没找到")
            return
    
    n = int(input('请输入你要查找的数:'))
    lst = [1,4,6,7,9,21,23,45,67,87,65,43,89]
    
    
    func(n,lst)
    # 递归2
    def func(n,lst,left,right): # 递归找到什么是可变的,什么是不可变的
        if left <= right:
            mid = (left+right)//2
                if n > lst[mid]:
                    left = mid+1
                    return func(n,lst,left,right)
                elif n < lst[mid]:
                    right = mid - 1
                    return func(n, lst, left, right)
                else:
                    print('找到了')
                    return mid # 难点
        else:
            print('找不到')
            return -1
    
    n = int(input('请输入你要查找的数:'))
    lst = [13,45,56,67,78,57,89,101]
    ret = func(n,lst,0,len(lst)-1)
    print(ret)
    # 最快的查找方法
    
    lst = [13,45,56,57,67,78,89,101]
    
    # 找出最大的数
    new_lst = []
    for i in range(99):
        new_lst.append(0)
    
    for i in lst:
        new_lst[i] = 1
    
    i = int(input('请输入你要找的数据:'))
    if new_lst[i] == 0:
        print('不存在')
    else:
        print('存在')
  • 相关阅读:
    痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.2)- 在串行NOR Flash XIP调试原理
    痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.1)- 玩转板载OpenSDA,Freelink调试器
    痞子衡嵌入式:史上最强i.MX RT学习资源汇总(持续更新中...)
    痞子衡嵌入式:终于可以放开聊一聊i.MXRT1170这颗划时代MCU了
    痞子衡嵌入式:MCUBootUtility v2.0来袭,i.MXRT1010哪里跑
    痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(1)- 官方EVK简介
    3万字总结,Mysql优化之精髓
    不停机替换线上代码? 你没听错,Arthas它能做到
    Springboot 2.x 如何解决重复提交 (本地锁的实践)
    MYSQL插入千万数据的工具类
  • 原文地址:https://www.cnblogs.com/1915823-huxt/p/10116379.html
Copyright © 2011-2022 走看看