Basic Python
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
list(xrange()) == range() --> En python3 range es el xrange de python2 (no es una lista sino un generador) La diferencia entre una Tupla y una Lista es que la posición de un valor en una tupla le da significado, mientras que las listas son solo valores ordenados. Las tuplas tienen estructuras pero las listas tienen un orden.
Para elevar un número se utiliza: 3**2 (no 3^2) Si haces 2/3 devuelve 1 porque estás dividiendo dos enteros (integers). Si quieres decimales debes dividir floats (2.0/3.0). i >= j i <= j i == j i != j a and b a or b not a float(a) int(a) str(d) ord("A") = 65 chr(65) = 'A' hex(100) = '0x64' hex(100)[2:] = '64' isinstance(1, int) = True "a b".split(" ") = ['a', 'b'] " ".join(['a', 'b']) = "a b" "abcdef".startswith("ab") = True "abcdef".contains("abc") = True "abc\n".strip() = "abc" "apbc".replace("p","") = "abc" dir(str) = Lista de todos los métodos disponibles help(str) = Definición de la clase str "a".upper() = "A" "A".lower() = "a" "abc".capitalize() = "Abc" sum([1,2,3]) = 6 sorted([1,43,5,3,21,4])
Unir caracteres 3 * ’a’ = ‘aaa’ ‘a’ + ‘b’ = ‘ab’ ‘a’ + str(3) = ‘a3’ [1,2,3]+[4,5]=[1,2,3,4,5]
Partes de una lista ‘abc’[0] = ‘a’ 'abc’[-1] = ‘c’ 'abc’[1:3] = ‘bc’ de [1] a [2] "qwertyuiop"[:-1] = 'qwertyuio'
Comentarios # Comentario de una línea """ Comentario de varias líneas Otro comentario """
Bucles
t1 = (1, '2', 'tres') t2 = (5, 6) t3 = t1 + t2 = (1, '2', 'tres', 5, 6) (4,) = Singleton d = () tupla vacía d += (4,) --> Agregando a una tupla ¡NO SE PUEDE! --> t1[1] == 'Nuevo valor' list(t2) = [5, 6] --> De tupla a lista
d = [] vacía a = [1, 2, 3] b = [4, 5] a + b = [1, 2, 3, 4, 5] b.append(6) = [4, 5, 6] tuple(a) = (1, 2, 3) --> De lista a tupla
d = {} vacío monthNumbers={1:'Ene', 2: 'feb','feb':2}--> monthNumbers ->{1:'Ene', 2: 'feb','feb':2} monthNumbers[1] = 'Ene' monthNumbers['feb'] = 2 list(monthNumbers) = [1, 2, 'feb'] monthNumbers.values() = ['Ene', 'feb', 2] keys = [k for k in monthNumbers] a={'9':9} monthNumbers.update(a) = {'9':9, 1:'Ene', 2: 'feb','feb':2} mN = monthNumbers.copy() #Copia independiente monthNumbers.get('clave',0) #Verifica si la clave existe, devuelve el valor de monthNumbers["clave"] o 0 si no existe
En los conjuntos no hay repeticiones myset = set(['a', 'b']) = {'a', 'b'} myset.add('c') = {'a', 'b', 'c'} myset.add('a') = {'a', 'b', 'c'} #Sin repeticiones myset.update([1, 2, 3]) = set(['a', 1, 2, 'b', 'c', 3]) myset.discard(10) #Si está presente, elimínalo, si no, no hace nada myset.remove(10) #Si está presente, elimínalo, si no, genera una excepción myset2 = set([1, 2, 3, 4]) myset.union(myset2) #Valores en myset O myset2 myset.intersection(myset2) #Valores en myset Y myset2 myset.difference(myset2) #Valores en myset pero no en myset2 myset.symmetric_difference(myset2) #Valores que no están en myset Y myset2 (no en ambos) myset.pop() #Obtener el primer elemento del conjunto y eliminarlo myset.intersection_update(myset2) #myset = Elementos en ambos myset y myset2 myset.difference_update(myset2) #myset = Elementos en myset pero no en myset2 myset.symmetric_difference_update(myset2) #myset = Elementos que no están en ambos
El método en __It__ será el utilizado por sort para comparar si un objeto de esta clase es mayor que otro
Map es como: [f(x) for x in iterable] --> map(tutple,[a,b]) = [(1,2,3),(4,5)] m = map(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9]) --> [False, False, True, False, False, True, False, False, True]
zip se detiene cuando el más corto entre foo o bar se detiene:
Lambda se utiliza para definir una función (lambda x,y: x+y)(5,3) = 8 --> Usa lambda como una función simple sorted(range(-5,6), key=lambda x: x** 2) = [0, -1, 1, -2, 2, -3, 3, -4, 4, -5, 5] --> Usa lambda para ordenar una lista m = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9]) = [3, 6, 9] --> Usa lambda para filtrar reduce (lambda x,y: x*y, [1,2,3,4]) = 24
Si la condición es falsa, la cadena se imprimirá en la pantalla
Un generador, en lugar de devolver algo, "cede" algo. Cuando accedes a él, "devolverá" el primer valor generado, luego, puedes acceder a él nuevamente y devolverá el siguiente valor generado. Por lo tanto, no todos los valores se generan al mismo tiempo y se puede ahorrar mucha memoria utilizando esto en lugar de una lista con todos los valores.
Si lo ejecutas, verás algo como lo siguiente:
Aprende y practica Hacking en AWS: HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)