leetcode刷题中的python知识点总结

字符串

  1. 字符串中查找匹配
str.find(str1) 
a='dog'
>>> a.find('go')   不存在,局部也不行,返回-1
-1
>>> a.find('og') 存在,但不是从头开始一致,返回1
1
>>> a.find('do') 存在,包含和完全一致,返回0
0

直接对比 if a in b

字典

字典形式
d = {key1 : value1, key2 : value2 }
  • 创建字典 dic={}

  • 赋值操作dic[key]=value
    重复赋相同的值,只出现一次

  • 查找操作 If key in dic
    返回value, 查value是找不到的

  • 按元素放入的先后顺序进行排序

         import collections
         dict = collections.OrderedDict()

集合

集合形式
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
  • 创建集合 a = set()
  • 添加元素a.add('x') 如果已经有的是添加不上的
  • 移除某个元素 a.remove('x')
  • 查找 if 'x' in a

列表

  • 可以当作栈结构使用
list.append(x)  默认加在列表的最后一位
list.pop()  默认弹出的最后一位
list.remove(target) 移除特定的元素
list.reverse() 对列表进行翻转
list.index(obj)  找到对象obj的索引index
list.insert(index, obj) 在对应索引的位置插入对象
list.count(obj)  计算对象obj在index中出现的次数
list.extend(seq) 一次性在列表后添加多个数值, 也可以用  list1+list2  的形式

注意,弹出的时候要判断list是否为空,否则在严格的判断中是会报错的

a=list.pop() if list else '#'

list拼接a+b

数组numpy

  1. 1维数组反转a=array([0,1,2]), a[::-1]------[2,1,0]

标准输入模板

  • 样例1–数字类型
    输入第一行包括一个数据组数t(1 <= t <= 100)
    接下来每行包括两个正整数a,b(1 <= a, b <= 10^9) ,输出a+b
    e.g.输入
#输入
2
1    5
10   20
输出
6
30
import sys
lines = list(sys.stdin)
#对第一行单独处理
t = int(lines[0].strip())
for n in lines[1:]:
    n = list(n.split(' '))
    print(int(n[0])+int(n[1]))

或者

#第一行单独处理
t = int(input())
while True:
    try:
        line = list(map(int, input().strip().split()))
        print(line[0]+line[1])
    except:
        break
  • 样例2–数字类型

输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据有多组, 如果输入为0 0则结束输入

输入
1  5
10  20
0  0
输出
6
30
while True:
    try:
        line = list(map(int, input().strip().split()))
        # line每次读到的是一行
        if line[0]==0 & line[1]==0:
            break
        else:
            print(line[0]+line[1])
    except:
        break

attention
a.split(’_ ‘) 和a.split()效果一样,a.split(’’)报错

>>> a='a mk ll'
>>> a.split()
['a', 'mk', 'll']
>>> a.split('')
Traceback (most recent call last):
  File "", line 1, in 
ValueError: empty separator
>>> a.split(' ')
['a', 'mk', 'll']
  • 样例3–字符串类型
    输入有两行,第一行n, 第二行是n个空格隔开的字符串
输入
5
c d a bb e
输出
a bb c d e
n = int(input())
while True:
    try:
        line = list(input().split())
        line.sort()
        print(' '.join(line))
    except:
        break

attention
想要的输出是序列而不是列表

a=['a', 'b', 'c']
>>> print(a)
['a', 'b', 'c']
>>> print(' '.join(a))
a b c
>>> print(''.join(a))
abc
  • 样例4–字符串类型
    多个测试用例,每个测试用例一行。每行通过,隔开,有n个字符,n<100
输入
a,c,bb
f,dddd
nowcoder
输出
a,bb,c
dddd,f
nowcoder
while True:
    try:
        line = list(input().split(','))
        line.sort()
        print(','.join(line))
    except:
        break

参考:OJ在线编程常见输入输出练习场 https://ac.nowcoder.com/acm/contest/320#question

你可能感兴趣的:(leetcode)