zoukankan      html  css  js  c++  java
  • CCF-CSP考试使用python编写时的注意点

    好文推荐

    代码优化加速https://mp.weixin.qq.com/s/vsMSjkxWpNnHtdFH7BaEAQ
    Python 内置的数据结构如str, tuple, list, set, dict底层都是 C 实现的,速度非常快,自己实现新的数据结构想在性能上达到内置的速度几乎是不可能的。

    • list类似于 C++ 中的std::vector,是一种动态数组。其会预分配一定内存空间,当预分配的内存空间用完,又继续向其中添加元素时,会申请一块更大的内存空间,然后将原有的所有元素都复制过去,之后销毁之前的内存空间,再插入新元素。
      删除元素时操作类似,当已使用内存空间比预分配内存空间的一半还少时,会另外申请一块小内存,做一次元素复制,之后销毁原有大内存空间。
    • 因此,如果有频繁的新增、删除操作,新增、删除的元素数量又很多时,list的效率不高。此时,应该考虑使用collections.deque。collections.deque是双端队列,同时具备栈和队列的特性,能够在两端进行 O(1) 复杂度的插入和删除操作。
    • list的查找操作也非常耗时。当需要在list频繁查找某些元素,或频繁有序访问这些元素时,可以使用bisect维护list对象有序并在其中进行二分查找,提升查找的效率。

    另外一个常见需求是查找极小值或极大值,此时可以使用heapq模块将list转化为一个堆,使得获取最小值的时间复杂度是 O(1)。
    下面的网页给出了常用的 Python 数据结构的各项操作的时间复杂度:https://wiki.python.org/moin/TimeComplexity


    1、input (转化为int)

    Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。

    # 将输入的变量,以空格划分
    x,y,z = list(map(int, input().split()))
    

    当然除了input()函数还有sys模块带有标准输入,一般情况下比input()函数快4倍,这里注意下区别,input()把读到的行用字符串的形式返回,但不会返回行尾的换行符,而sys.stdin.readline()则会,加上strip()函数效果就一样了

    arr=sys.stdin.readline().strip()
    


    2、split

    Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串。返回分割后的字符串列表。

    str.split(str="", num=string.count(str)).
    
    • str -- 分隔符,默认为所有的空字符,包括空格、换行( )、制表符( )等。
    • num -- 分割次数。默认为 -1, 即分隔所有。


    3、List

    空间申请

    IndexError:list assignment index out of range
    ERROR code

    b = []
    for i in range(10):
        b[i] = 7
    

    空数组不能直接指定位置,list是一个空的,没有一个元素,进行list[0]就会出现错误!
    解决方法1

    b.append(1)
    

    解决方法2
    生成一个定长的list:

    b=[0]*len(data)
    b[1]=1
    

    list的插入和删除

    aList = [123, 'xyz', 'zara', 'abc', 'xyz'];
    aList.remove('xyz')
    alist.insert(index,obj)
    obj=alist.pop(index) #defalut index=-1即最后一个元素
    

    4、输出格式如1 2 3 4

    ans=[1,2,3,4]
    print(' '.join(map(str,ans)))
    

    map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回


    参考

    https://blog.csdn.net/u013495762/article/details/82870455
    https://www.cnblogs.com/lincappu/p/8179475.html(map函数用法)
    https://blog.csdn.net/www_helloworld_com/article/details/82875433

  • 相关阅读:
    android 75 新闻列表页面
    android 74 下载文本
    android 73 下载图片
    android 72 确定取消对话框,单选对话框,多选对话框
    android 71 ArrayAdapter和SimpleAdapter
    android 70 使用ListView把数据显示至屏幕
    maven如何将本地jar安装到本地仓库
    Centos6.7搭建ISCSI存储服务器
    解决maven打包编译出现File encoding has not been set问题
    MySQL 解决 emoji表情 的方法,使用utf8mb4 字符集(4字节 UTF-8 Unicode 编码)
  • 原文地址:https://www.cnblogs.com/z-712/p/15026767.html
Copyright © 2011-2022 走看看