Resumen de conocimiento de Python de Blue Bridge Cup (detallado)

Cómo Python recibe datos

1、接收一个元素
s = input() #字符串
n = int(input()) #整数

2、接收两个或三个元素(以空格隔开)
n, m = map(int, input().split())
n, m, k = map(int, input().split())

3、将一行元素放入数组中
num = [int(i) for i in input().split()]

4、将数组变为整个字符串
s= "".join(map(str,num))

Métodos integrados de Python

hex()  将数字转换为十六进制字符串
oct()  将整数转换成八进制字符串               
oct(int("39",16)) >>>'0o71'  十六进制转八进制
chr(number)  返回数字对应的ascii码值
divmod(a,b)  返回(a//b,a%b)

métodos de cadena de Python

s.swapcase() 将字符串中所有字母的大小写都反转
s.upper() 将字符串所有的字母都转换为大写
s.lower() 将字符串所有的字母都转换为小写
s.isdigit() 检查字符串中的字符是否都是数字
s.isnumeric() 检查字符串中的所有字符是否都是数字字符
s.capitalize() 返回字符串的副本,但将第一个字符大写
s.isalpha() 检查字符串中的所有字符是否都是字母
s.isalnum() 检查字符串中的字符是否都是字母或数
s.isspace() 检查字符串中的字符是否都是空白字符

módulo pitón

módulo de estadísticas

1、statistics.mean()  求算术平均值
2、statistics.median() 计算数据的中位数,如果有两个中位数,则返回其平均值
   statistics.median_low() 数据中的低中位数
   statistics.median_high() 数据中的高中位数
3、statistics.mode()  计算众数
4、statistics.pvariance() 计算数据的总体方差

módulo de colecciones

1、collections.deque([])
        q = collections.deque([1, 2, 3, 4])
        q.rotate(1)
        print(q)  # [4, 1, 2, 3]
        q.rotate(1)
        print(q)  # [3, 4, 1, 2]
2、collections.Counter()
    >>> import collections
    >>> collections.Counter([1,2,3,1,2,3,1,2])
    Counter({
    
    1: 3, 2: 3, 3: 2})

módulo de fecha y hora

1、日期增加
>>> import datetime
>>> bt = datetime.date(2000,11,6)
>>> print(bt)
2000-11-06
>>> a = datetime.timedelta(days=100)
>>> a
datetime.timedelta(days=100) #weeks / hours
>>> b = a + bt
>>> b
datetime.date(2001, 2, 14)

2. Encuentra el día de la semana a partir de una fecha dada

bt.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
bt.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;

3. Estandarización

>>> bt.isoformat()
'2000-11-06'

4. Devolver el número de días desde el inicio del calendario gregoriano hasta el presente

>>> bt.toordinal()
730430

5. Salida

>>> bt.__format__('%Y/%m/%d')
'2000/11/06'

módulo de calendario

    1、判断是否为闰年
    >>> import calendar
    >>> calendar.isleap(2022)
    False

   2、返回两年之间的闰年总数
    >>> calendar.leapdays(2000,2020)

programación dinámica

solución aproximada

1. Defina el significado de los elementos de la matriz, comprenda el significado de dp[i] y los resultados expresados
​​2. Averigüe la relación entre los elementos de la matriz, es decir, la ecuación de transferencia dinámica, fórmula recursiva
3. Averigüe la inicial valor, como el valor del primer elemento

algoritmo de retroceso

marco

ans = []
def trace(path,choices):
    if len(path) == len(nums):
        ans.append(list(path))

    for i in choices:
        if i in path:       
            continue
        path.append(i)
        trace(path,choices)
        path.pop()      
    return ans
nums = [1,2,3]
print(trace([],nums))
>>> [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
res = []  
path = []  
def bt(nums,startIndex):
    res.append(path[:])
    for i in range(startIndex,len(nums)):
        path.append(nums[i])
        bt(nums,i+1)
        path.pop()
nums = [1,2,3]
bt(nums,0)
print(res)
>>> [[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]

Cadena n.º 9, inversión de lista

s = "123456"
s[::-1]
>>>"654321"

Ejemplo de algoritmo de retroceso # 17 39 40 46 47 77 78 90 1079

Puntos de conocimiento contenidos en las preguntas simples de Lituo (el número al frente es el número de la pregunta)

#14 función enumerar()

用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
 max()和min(),字符串是可以比较的,按照ascII值排 abb, aba,abac,最大为abb,最小为aba

función de cremallera

a = [1,2,3]  b = [4,5,6]
list(zip(a,b))
>>>[(1,4),(2,5),(3,6)]
strs = ["flower","flow","flight"] 
list(zip(*strs))

#17 #46 #47 módulo itertools

import itertools
   1)product
for i in itertools.product('ab', 'cd'):
    print(i)
>>>('a', 'c')
   ('a', 'd')
   ('b', 'c')
   ('b', 'd')

  2)permutations
    list(itertools.permutations('ABC'))
    >>>[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
    list(itertools.permutations('ABC', 2))
    >>>[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]

    3)combinations
    list(itertools.combinations("ABC",2))
    >>>[('A', 'B'), ('A', 'C'), ('B', 'C')]

    4)accumulate 可指定函数,默认为求和
    list(itertools.accumulate([0,1,0,1,1,2,3,5]))
    >>>[0, 1, 1, 2, 3, 5, 8, 13]
    list(itertools.accumulate([0,1,0,1,1,2,3,5],max))
    >>>[0, 1, 1, 1, 1, 2, 3, 5]

#20 Al buscar elementos, considere reemplazar elementos de cadena. reemplazar
("()", "")

#27 Cuando elimine un elemento, puede usar remove
remove para eliminar el primer elemento en la lista con el valor especificado mientras ture

#28 find busca una subcadena en una cadena, si la encuentra, devuelve el índice del primer carácter de la cadena, si no la encuentra, devuelve -1
a = “asdfghjkl” b = “jkl”
Algoritmo KMP


#49 Uso del diccionario de agrupación de anagramas alfabéticos

strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
res = []
dic = {
    
    }
for s in strs:
    keys = "".join(sorted(s))
    if keys not in dic:
        dic[keys] = [s]
    else:
        dic[keys].append(s)
print(list(dic.values()))
>>>[['eat', 'tea', 'ate'], ['tan', 'nat'], ['bat']]

#50 Función de potencia

.pow(a,b)

#58 Divida la cadena en secuencias de acuerdo con los caracteres especificados s.split(" ")
elimine los espacios en blanco al principio y al final de la cadena y devuelva el resultado eliminado s.strip()

#64 Crear método de lista bidimensional

dp = [[0 for _ in range(n)] for j in range(m)]
dp = [[0] * n for i in range(m)]

#67 De binario a decimal int("cadena binaria", 2)
de decimal a binario bin(entero)[2:]

#88 Eliminar el último elemento de la lista

list.pop()

#136 Los números que aparecen solo una vez usan la operación XOR

a = 0
for i in nums:
    a = a^i

#191 Binary
bin() devuelve la representación binaria de un entero int o un entero largo long int.

#231 Número binario de la potencia de 2, solo un bit es uno

#268 Realice sumas y restas de matrices o elimine elementos duplicados
La función set() crea un conjunto de elementos no ordenados y no repetidos, que se puede usar para probar relaciones y eliminar datos duplicados

#367 Encuentra cuadrados perfectos sin biblioteca

1、完全平方数是前n个连续奇数的和 1+3+5+7+9++(2n-1)=n^2
2、n ** 0.5 % 1

Se puede comparar la función de conjunto #500

a = set('qwertyuiop')
b = set("reagdagd")
return b<a

#520 string.islower() #Comprobar que todas las letras de la cadena estén en minúsculas
string.isupper() #Comprobar que todas las letras de la cadena estén en mayúsculas
string.istitle() Comprobar que la cadena se encuentra después de una letra que no sea Todas las letras son mayúsculas y todas las demás letras son minúsculas / puede detectar si la primera letra de la cadena es mayúscula

#599 Pares clave-valor para diccionarios al revés

b = {
    
    v:k for k,v in d.items()}
寻找键
for i in d:
    if ans[i] == a:
        l.append(i)

#605 Al considerar el problema de los límites, puede agregar un número antes y después de la matriz

#645 Al buscar diferentes elementos en una matriz continua, puedes usar la suma para encontrar

#709 Convertir todas las letras de la cadena a minúsculas
s.lower()

#914 Encuentra los factores comunes de todos los números en la matriz

 while len(ans) != 1:
        ans = sorted(ans)
        c = math.gcd(ans[0],ans[1])
        if c == 1:
            print("1")
        else:
            ans.append(c)
            ans.remove(ans[0])
            ans.remove(ans[0])
    print(ans[0])

#922 Combinar dos listas

from itertools import chain
list(chain.from_iterable(zip(a, ans)))

[i for n in zip(a, ans) for i in n]

#1154 Se determina que la fecha es el día del año

time.strptime(date, "%Y-%m-%d")[-2]

#1185 Fecha para determinar el día de la semana

datetime.datetime(year,month,day).strftime("%w")

#1207 Encuentra el número de ocurrencias de todos los elementos en la matriz

from collections import Counter
arr = [1,2,2,1,1,3]
print(Counter(arr).values())
>>>dict_values([3, 2, 1])
from collections import Counter
arr = [1,2,2,1,1,3]
print(Counter(arr))
>>>Counter({
    
    1: 3, 2: 2, 3: 1})

#1232 No use la división para la pendiente de la línea, el divisor puede ser 0, use la multiplicación en su lugar
y2 / y1 == x2 / x1
x1 * y2 == x2 * y1

#1304 generador de listas

[i for i in range(1,n)]

#1323 replace reemplaza la cadena especificada con otra cadena
str.replace(carácter especificado, carácter objetivo, número de veces no excedido)

# 1331 Puede usar enumerar para crear un diccionario y encontrar el subíndice de acuerdo con el elemento

a = sorted(set(arr))
d = {
    
    }
for i, v in enumerate(a, 1):
    d[v] = i

#1337 Los diccionarios se ordenan según el tamaño del valor

d = sorted(d.items(), key=lambda item:item[1])

#1342 Usar while cuando se desconoce el número de bucles

#1346 Determinar si la lista está vacía
len() Preste atención al 0 especial, doble o 0

# 1365 Para encontrar un número más pequeño o más grande que el número especificado, puede ordenarlo primero y luego obtener cuántos números hay por el valor del índice

#1380 El número de la suerte en la matriz
obtiene los elementos de cada columna de la matriz bidimensional

matrix = [[3,7,8],[9,11,13],[15,16,17]]
colmin = [i for i in zip(*matrix)]
>>>[(3, 9, 15), (7, 11, 16), (8, 13, 17)]

#1556 Separador de mil

print({
    
    :,}.format(n).replace(",","."))
n = 123456
>>>123.456

#1608 bisect.bisect_left(list , i) Encuentre la posición donde se insertará el valor y regrese

#1624 string.rfind() encuentra la posición de la última aparición de un carácter, devuelve -1 si no hay

#1710 Ordenar de acuerdo a cierta regla

l = [[5,10],[2,5],[4,7],[3,9]]
l = sorted(l, key=lambda x:-x[1])
>>>[[5, 10], [3, 9], [4, 7], [2, 5]]
l = ["adss","a","sad","sd"]
l = sorted(l,key=lambda x:len(x))
>>>['a', 'sd', 'sad', 'adss']

#1863 Encuentra todos los subconjuntos de una lista dada

l = [[]]
for x in nums:
    l.extend([i + [x] for i in l])

Acumule los elementos en la secuencia, por ejemplo: encuentre la suma XOR de todos los elementos

from functools import reduce
j = [1,2,3,4,5]
reduce(lambda x,y:x ^ y,j)

#1880 Devuelve el valor específico de una sola letra, primero puede devolver su código Unicode

  ord("a")
  >>>97

#1979 Encuentra el máximo común divisor de a y b

  gcd(a,b)

#5947 Devuelve una nueva colección cuyos elementos están contenidos tanto en la colección x como en la colección y

  x.intersection(y)

Consulta algunos temas interesantes

Pregunta de inducción matemática parcial: #6 Transformación en forma de Z #441 Arreglo de monedas #1518 Problema de cambio de vino
#258 Todos agregan https://leetcode-cn.com/problems/add-digits/
Sorpresa de pensamiento: #645 Conjunto incorrecto https : // leetcode-cn.com/problems/set-mismatch/
#461 Distancia de Hamming https://leetcode-cn.com/problems/hamming-distance/ (operación OR exclusiva)
#246 Número simétrico central https://leetcode -cn. com/problems/strobogrammatic-number/
#838 Push dominoes https://leetcode-cn.com/problems/push-dominoes/ (reemplazo de elementos)
#453 Número mínimo de operaciones para hacer que los elementos de la matriz sean iguales https://leetcode- cn .com/problems/minimum-moves-to-equal-array-elements/
#1002 Encuentra caracteres comunes https://leetcode-cn.com/problems/find-common-characters/
#657 ¿Puede el robot volver al origen https : //leetcode-cn.com/problems/robot-return-to-origin/
#2124 Comprobar si todos los A están antes que B https://leetcode-cn.com/problems/check-if-all-as-appears-before-all-bs/
#908 Diferencia mínima I https://leetcode-cn. com/problems/smallest-range-i/
#343 división de enteros https://leetcode-cn.com/problems/integer-break/

Uso de expresiones lambda: #1287 #1122 #1710 #1337

Recuerde la idea más directa:
#5957 Agregar espacios a las cadenas https://leetcode-cn.com/problems/adding-spaces-to-a-string/
#1935 El número máximo de palabras que se pueden ingresar https://leetcode - cn.com/problems/maximum-number-of-words-you-can-type/
#283 Mover cero https://leetcode-cn.com/problems/move-zeroes/
#169 La mayoría de los elementos https://leetcode - cn.com/problems/majority-element/
#459 Subcadena repetida https://leetcode-cn.com/problems/repeated-substring-pattern/
#2006 Número de pares cuyo valor absoluto es K https:/ /leetcode-cn .com/problems/count-number-of-pairs-with-absolute-difference-k/

Supongo que te gusta

Origin blog.csdn.net/qq_46500711/article/details/124513546
Recomendado
Clasificación