python在程序竞赛中的使用

1. 输入

n个整数,空格间隔:

n=int(input())
arr=list(map(int, input().split()))
#map的第一个参数int将输入限定为整数,
#map第一个参数为float时,参数可为整数或浮点数

2. 循环

range(start, stop[, step])
参数说明:

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

循环生成列表:

listt=[chr(i) for i in range(65,89)]

3. 字符串

chr(65) #获取ascll码对应的字符
ord('A') #获取字符的ascll

4. 切片

字符串类型使用str[-1:]默认为倒序,列表型使用[-1:]顺序不变,切片最多可有三个参数:

>>> str="1234"
>>> str[-2:]
'34'
>>> str[-2:-1]
'3'
>>> str[-2:-0]
''
>>> lt=[1,2,3,4]
>>> lt[::-1]
[4, 3, 2, 1]
>>> lt[:3:-1]
[]
>>> lt[0:3:-1]
[]
>>> lt[1::-1]
[2, 1]
>>> lt[1:1:-1]
[]
>>> lt[2:1:-1]
[3]
>>> str[::-1]
'4321'```
# 5. 进制转换

```python
print(bin(0o67))   #2进制
print(hex(100))   #16进制
print(oct(0x10))   #8进制
print(int(0b10))   #10进制

6. 格式化输出

https://www.cnblogs.com/qinchao0317/p/10699717.html

7. 数据类型

python中浮点输出默认四舍五入

https://www.runoob.com/python3/python3-data-type.html

8. queue

https://www.pianshen.com/article/3255431131/

9. 二维数组

正确的方法
cols= 3
rows = 2

memo = [[1] * m for i in range(n) ]

下面这种做法是错误的

memo = [[1] * m ] * n

这会导致 memo[0] == memo[1],改变其中一个子数组的值,另一个子数组也会一起变

10. list

  • a.pop(index):删除列表a中index处的值,并且返回这个值.
  • del(a[index]):删除列表a中index处的值,无返回值. del中的index可以是切片,所以可以实现批量删除.
  • ```a.remove(value)``:删除列表a中第一个等于value的值,无返回.

11. set

temp.remove(1):remove方法删除元素时,如果元素不存在,会引发KeyError的错误
temp.discard(999):discard方法删除元素时,元素不存在,不会引发任何错误
temp.pop():从set中随机删除并返回一个元素,set为空会引发KeyError
temp.clear():移除set中的所有元素

12. dictionary

  1. Python字典的clear()方法(删除字典内所有元素)
dict = {'name': '我的博客地址', 'alexa': 10000, 'url': 'http://blog.csdn.net/uuihoo/'}
dict.clear();  # 清空词典所有条目
  1. Python字典的pop()方法(删除字典给定键 key 所对应的值,返回值为被删除的值)
site= {'name': '我的博客地址', 'alexa': 10000, 'url':'http://blog.csdn.net/uuihoo/'}
pop_obj=site.pop('name') # 删除要删除的键值对,如{'name':'我的博客地址'}这个键值对
print pop_obj   # 输出 :我的博客地址
  1. Python字典的popitem()方法(随机返回并删除字典中的一对键和值)
site= {'name': '我的博客地址', 'alexa': 10000, 'url':'http://blog.csdn.net/uuihoo/'}
pop_obj=site.popitem() # 随机返回并删除一个键值对
print pop_obj   # 输出结果可能是{'url','http://blog.csdn.net/uuihoo/'}
  1. del 全局方法(能删单一的元素也能清空字典,清空只需一项操作)
site= {'name': '我的博客地址', 'alexa': 10000, 'url':'http://blog.csdn.net/uuihoo/'}
del site['name'] # 删除键是'name'的条目 
del site  # 清空字典所有条目

13. 匿名函数 lambda

https://blog.csdn.net/weixin_43790276/article/details/90730797

14. sort自定义

python3取消了python2中sort的cmp函数,换用面向对象重载lt方法实现

15. heapq模块实现priorityQueue

import heapq as hp

arr=[]
hp.heapify(arr)
hp.heappush(arr,1)
hp.heappush(arr,3)
hp.heappush(arr,-2)

print(arr)

hp.heappop(arr)
print(arr)

hp.heappop(arr)
print(arr)

hp.heappushpop(arr,999)
print(arr)


class Xxm:
    def __init__(self,a,b):
        self.aa=a
        self.bb=b
    def __lt__(self,other):
        return self.bb<other.bb

arr1=[]
hp.heappush(arr1,Xxm(1,3))
hp.heappush(arr1,Xxm(3,2))
hp.heappush(arr1,Xxm(4,0))

tmp=hp.heappop(arr1)
# tmp=
# print(hp.heappop(arr1))
print(tmp.aa,tmp.bb)
for i in range(len(arr1)):
    print(arr1[i].aa,arr1[i].bb)

16. bisect

bisect_left为查找大于等于value的第一个位置
bisect_right查找大于value的第一个位置

import bisect as bs

arr=[1,2,3,3,3,5,6]
print(bs.bisect(arr,3))
print(bs.bisect_left(arr,3))
print(bs.bisect_right(arr,3))


print(bs.bisect(arr,4))
print(bs.bisect_left(arr,4))
print(bs.bisect_right(arr,4))

5
2
5

5
5
5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值