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

  • 相关阅读:
    信息安全系统设计基础第四周学习内容
    信息安全系统设计基础第三周学习总结
    第十二节 Linux下软件安装
    第十一节 正则表达式基础
    session的生命周期
    session对象
    什么是session
    请求重定向和请求转发的关系
    java web的response对象
    java web中request对象(下)
  • 原文地址:https://www.cnblogs.com/z-712/p/15026767.html
Copyright © 2011-2022 走看看