-
Notifications
You must be signed in to change notification settings - Fork 2
/
all.py
900 lines (730 loc) · 28 KB
/
all.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
# mostrar mensaje por pantalla
print ("Hola Mundo")
# variables y una lista de palabras reservada que python declara
help('keywords')
# cadenas de textos
help(str)
# NUMEROS
numero = 5 # entero -> integer
decimal = 1.2 # float
suma = 10 + 8
resta = 18 - 8
multiplicar = 16*2
dividir = 10 / 2
divicion_sin_decimal = 1 // 3
modulo = 1 % 3
potencia = 2 ** 3
# otra notacion
# numero += 5
# numero -= 3
# numero *= 5
# numero /= 2
numero //= 2
print(dividir)
print(divicion_sin_decimal)
print(modulo)
print(potencia)
print(f"numero {numero}")
# FUNCIONES MATEMATICAS
# round() #Devuelve el número redondeado a la precisión de los dígitos después del punto decimal. Si se omite ndigits o es None, devuelve el entero más cercano a su entrada.
print(round(1.3))
print(round(1.5))
print(round(1.7))
# abs() Devuelve el valor absoluto de un número. El argumento puede ser un número entero, un número de coma flotante o un objeto que implemente __abs__(). Si el argumento es un número complejo, se devuelve su magnitud.
print(abs(-44))
print(abs(44))
# COMPARADORES LOGICOS
print(1 < 2)
print(1 > 2)
print(1 <= 2)
print(1 >= 2)
print(1 == 2)
print(2 == "2")
print(1 != 2)
print(1 != "2")
# capturar valores por pantalla (input) y mostrar
nombre = input('escribe tu nombre ')
print(nombre)
# EJERCICIO: como saber si un anio es bisiesto
print ("Digite el año:")
anio = int(input()) #convertir en entero
if (anio % 4 == 0 and anio % 100 != 0) or anio % 400 == 0:
print ("Año bisiesto")
else:
print ("Año NO bisiesto")
# EJERCICIO: mostrar si el numero ingresao es par o impar
num = input('Introduce un número:')
numInt = int(num)
if (numInt%2==0):
print('El numero es par')
else:
print('El numero es impar')
# MOSTRAR LISTA
# range()
for numero in range(5):
print(numero)
lista = list(range(1, 4))
print(lista)
for numero in range(5):
print(numero)
## con string
for numero in range(5):
print(numero, numero * "python ")
## for else
buscar = 2
for numero in range(5):
print(numero)
if numero == buscar:
print("encontrado", buscar)
break
else:
print(f"Lo siento, pero no se encontro el numero {buscar}")
## iterar un string
cadena = " esto es una cadena CON espacios "
for letra in cadena:
print(letra)
# BUCLES
## while
numero = 1
while numero < 100:
print(numero)
numero *= 2
comando = ""
while comando.lower() != "salir":
comando = input("$ ")
print(comando)
# while infinito
while True:
comando = input("$ ")
print(comando)
if comando.lower() == "exit":
break
# contar una lista
lista = [9, 13, 2, 7, 124, -5]
print (len(lista))
## EJERCICIO: como se haria sin la funcion len?
canList = 0
for elemento in lista:
canList += 1
print (f'El elemento que estamos añadiendo es {elemento} y ocupa el orden {canList}')
print(f'El resultado final es {canList}')
print('----------------------------')
## EJERCICIO: sumar los valores de una lista
lista = [9, 13, 2, 7, 124, -5]
print (sum(lista))
## como se haria sin la funcion sum
suma = 0
for elemento in lista:
suma = suma + abs(elemento)
print(f'añadir el elemento {abs(elemento)} y el resultado parcial es {suma}')
print (suma)
print('----------------------------')
## calcular la media de los valores de una lista
lista = [9, 13, 2, 7, 124, -5]
print(sum(lista)/len(lista))
## como se haria sin la funcion sum ni len
suma = 0
cuenta = 0
for elemento in lista:
cuenta += 1
suma = suma + elemento
print(f'el elemento que estamos introduciendo es {elemento}')
print(f'actualmente vamos por el elemento {cuenta}')
print(f'el resultado parcial de la suma es {suma}')
print(suma/cuenta)
## verificar si existe un elemento en una lista
lista = [9, 13, 2, 7, 124, -5, 7]
print(7 in lista)
## como se haria sin la funcion in
existe = False
valor = 7
cuenta = 0
for elemento in lista:
print(f'estamos en el elemento {elemento}')
if elemento == valor:
existe = True
cuenta += 1
print(existe, cuenta)
## como identificar el mayor y menor elemento de una lista
lista = [9, 13, 2, 7, 124, -5, 7]
print(max(lista))
print(min(lista))
## como se haria sin la funcion min y max
mayor = None
menor = None
for elemento in lista:
if mayor == None or menor == None:
mayor = elemento
menor = elemento
else:
if elemento > mayor:
mayor = elemento
if elemento < menor:
menor = elemento
print(f' el elemento mayor es {mayor}')
print(f'el elemento menor es {menor}')
#funciones
# funciones con parametros
def mifuncionParam(num1, num2):
print(f'---- FUNCIONES CON PARAMETROS ----')
print(f'el resultado de la suma de sus dos numeros es {num1+num2}')
mifuncionParam(5, 5)
# funcion con return
def suma(num1, num2):
total = num1 + num2
return total
valor_de_suma = suma(5, 5)
print(valor_de_suma)
# parametros opcionales
def imprime_cliente(nombre="Arturo", apellido="Cabrera"):
print(f"El nombre del cliente es {nombre} {apellido}")
imprime_cliente("Adrian", "Guillermo")
# argumentos nombrados
def imprime_user(nombre="Arturo", apellido="Cabrera"):
print(f"El nombre del cliente es {nombre} {apellido}")
imprime_user(apellido="Guerrero", nombre="Brunilde")
# xargs es poder pasarle N argumentos a la funcion
def suma(*numeros):
result = 0
for numero in numeros:
result += numero
print(result)
suma(2, 5)
suma(3, 4, 3)
# kwargs
## es obligatorio el nombre del parametro cuando se trabaje con kwargs
def get_product(**datos):
print(datos)
get_product(id="id", name="shoes", sku="nike001")
## acceder a los parametros en la funcion
def get_product(**datos):
print(datos["id"], datos["name"])
get_product(id="01", name="shoes", sku="nike001")
# modulos
# cada uno de los archivos .py que generamos en python se denominan modulos, y son considerados contenedores para organizar nuestro codigo
#paquetes
# un pauqete es un modulo que sirve para contener otros modulos y paquetes, en la practica es un directorio que contiene un archivo '__init__.py
# dentro de dicho directorio podremos tener almacenados otros modulos o paquetes
# .
# |-- modulo1.py
# |-- paquete
# |-- __init__.py
# |-- modulo1.py
# |-- subpaquete
# |-- __init__.py
# |-- modulo1.py
# |-- modulo2.py
import math
help(math) # mostrar la descripcion de la libreria
print(math.cos(math.pi)) #coseno de pi
# funciones desde objetos
miTexto = "el perro de san roque no tiene rabo"
help(str)
str.title(miTexto) #poner el principio de cada palabra en mayuscula
miTexto.title() # lo mismo que en lo anterior
miTexto.replace('san','mr') #replazar palabras
miTexto.replace('san','mr').title()
# CADENAS DE TEXTOS
refran = "el perro de san roque no tiene rabo "
refran = refran + 'porque ramon rodriguez se lo ha robado'
print(refran)
print(refran*2) # lo repite * cuantas veces se le indique
## la \ nos ayuda a organizarnos
refran = "el perro de san roque no tiene rabo "\
"porque ramon rodriguez se lo ha robado, "\
"esto es un refran tipico de España."
print(refran)
## la \n es el salto de linea
refran = "el perro de san roque no tiene rabo \n"\
"porque ramon rodriguez se lo ha robado, \n"\
"esto es un refran tipico de España."
print(refran)
## el ''' para escribir enb varias lineas e interprete saltos de lineas y espacios
refran = '''el perro de san roque no tiene rabo
porque ramon rodriguez se lo ha robado,
esto es un refran tipico de España. ole toro'''
print(refran)
# contar el tamaño de la cadena
refran = 'El perro de San Roque no tiene rabo ...'
print(len(refran)) # contar la cadena
print(refran[0]) #posicion 0
print(refran[38]) #posicion final
print(refran[3:21]) #principio - fin
print(refran[:21]) # desde el inicio hasta la posicion indicada de final
print(refran[21:]) # desde la posicion 21 hasta el final de la cadena
print(refran[:-10]) # desde el principio hasta -10 posisciones del final
print(refran[-10:]) # los 10 ultimos caracteres
# invertir una cadena
print(refran[::-1])
# Saltando caracteres al cortar Oo
# Es posible omitir caracteres durante el corte pasando el argumento de paso al método de corte.
language = 'Python'
pto = language[0:6:2]
print(pto) # Pto
# FUNCIONES MAS USADAS CON CADENAS DE CARACTERES
print(refran.upper())
refran.lower() #todas a minusculas
refran.upper() #todas a mayusculas
refran.capitalize() #la primera letra de la cadena
str.title(refran) # poner el principio de cada palabra en mayuscula
refran.title() # lo mismo que en lo anterior
refran.replace('no', 'si') #remplazar todo del primer parametro por l segundo
refran.find('Roque') #busca una palabra o un caracter e indica en que posicion esta
refran.find('roque') #-1 si no la encuentra, distingue mayuscula de minuscula
print("rabo" in refran) # busca si existe
print("rabo" not in refran) # busca si no existe
refran.lower().find('roque') #pasar a minuscula y buscar la palabra o letra
refran.strip() #elimina los espacios del rpincio y del final
refran.rstrip() # elimina los espacios de la derecha
refran.lstrip() # elimina los espacios de la izquierda
refran.split() #crea uan lista con cada elemento de la cadena de texto
refran.split('no') #parte la cadena en las veces que exista esa palabra o letra, quitando la palabra o letra que se pase por parametro
refran.isupper() #para determinar si una letra está en mayúscula
refran.islower() #para determinar si una letra está en minuscula
test = "1--2--3--4--5"
# split() puede seleccionar la posición en una cadena desde el frente para dividir.
print(test.split("--", 2))
# rsplit() puede seleccionar la posición en una cadena desde atrás para dividir.
print(test.rsplit("--", 2))
# salida
['1', '2', '3--4--5'] # split()
['1--2--3', '4', '5'] # rsplit()
# count() contando caracteres en eun string
# count(): devuelve ocurrencias de subcadena en cadena, cuenta(subcadena, inicio=.., final=..).
# El inicio es una indexación inicial para contar y el final es el último índice para contar.
refran = '''el perro de san roque no tiene rabo
porque ramon rodriguez se lo ha robado,
esto es un refran tipico de España. ole toro'''
print(refran.count('de'))
print(refran.count('de', 8, 20))
# endswith(): comprueba si una cadena termina con un final específico
challenge = 'programming with python'
print(challenge.endswith('on')) # True
print(challenge.endswith('tion')) # False
# expandtabs(): reemplaza el carácter de tabulación con espacios, el tamaño de tabulación predeterminado es 8. Toma el argumento de tamaño de tabulación
challenge = 'i\tam\tlearning\tpython'
print(challenge.expandtabs()) # 'i am learning python'
print(challenge.expandtabs(10)) # 'i am learning python'
# index (): devuelve el índice más bajo de una subcadena, los argumentos adicionales indican el índice inicial y final
# (predeterminado 0 y longitud de cadena - 1). Si no se encuentra la subcadena, genera un valueError.
challenge = 'i am learning python'
sub_string = 'da'
print(challenge.index(sub_string)) # 7
print(challenge.index(sub_string, 4)) # error
# rindex(): Devuelve el índice más alto de una subcadena, los argumentos adicionales indican el índice inicial y final (predeterminado 0 y longitud de la cadena - 1)
challenge = 'i am learning python'
sub_string = 'da'
print(challenge.rindex(sub_string)) # 8
print(challenge.rindex(sub_string, 9)) # error
# isalnum(): comprueba el carácter alfanumérico
challenge = 'ThirtyDaysPython'
print(challenge.isalnum()) # True
challenge = '30DaysPython'
print(challenge.isalnum()) # True
challenge = 'i am learning python'
print(challenge.isalnum()) # False, space is not an alphanumeric character
challenge = 'i am learning python 2019'
print(challenge.isalnum()) # False
# isalpha(): Comprueba si todos los elementos de la cadena son caracteres alfabéticos (a-z y A-Z)
challenge = 'i am learning python'
print(challenge.isalpha()) # False, space is once again excluded
challenge = 'ThirtyDaysPython'
print(challenge.isalpha()) # True
num = '123'
print(num.isalpha()) # False
# isdecimal(): comprueba si todos los caracteres de una cadena son decimales (0-9)
challenge = 'i am learning python'
print(challenge.isdecimal()) # False
challenge = '123'
print(challenge.isdecimal()) # True
challenge = '\u00B2'
print(challenge.isdecimal()) # False
challenge = '12 3'
print(challenge.isdecimal()) # False, espacio no permitido
# isdigit(): comprueba si todos los caracteres de una cadena son números(0-9 y algunos otros caracteres Unicode para números)
challenge = 'Thirty'
print(challenge.isdigit()) # False
challenge = '30'
print(challenge.isdigit()) # True
challenge = '\u00B2'
print(challenge.isdigit()) # True
# isnumeric(): comprueba si todos los caracteres de una cadena son números o están relacionados con números (al igual que isdigit(), solo acepta más símbolos, como ½)
num = '10'
print(num.isnumeric()) # True
num = '\u00BD' # ½
print(num.isnumeric()) # True
num = '10.5'
print(num.isnumeric()) # False
# isidentifier(): busca un identificador válido; verifica si una cadena es un nombre de variable válido
challenge = '30DaysOfPython'
print(challenge.isidentifier()) # False, because it starts with a number
challenge = 'thirty_days_of_python'
print(challenge.isidentifier()) # True
# join(): Devuelve una cadena concatenada
web_tech = ['HTML', 'CSS', 'JavaScript', 'React']
result = ' '.join(web_tech)
print(result) # 'HTML CSS JavaScript React'
web_tech = ['HTML', 'CSS', 'JavaScript', 'React']
result = '# '.join(web_tech)
print(result) # 'HTML# CSS# JavaScript# React'
# Formato de cadena de estilo antiguo (% operador)
# En Python hay muchas formas de formatear cadenas.
# En esta sección, cubriremos algunos de ellos. El operador "%"
# se utiliza para formatear un conjunto de variables encerradas en una "tupla" (una lista de tamaño fijo),
# junto con una cadena de formato, que contiene texto normal junto con "especificadores de argumento",
# símbolos especiales como "%s" , "%d", "%f", "%.número de dígitosf".
# %s - Cadena(o cualquier objeto con una representación de cadena, como números)
# %d - Enteros
# %f - Números de punto flotante
# "%.number of digitsf" - Números de punto flotante con precisión fija
# Strings only
first_name = 'Arturo'
last_name = 'Cabrera'
language = 'Python'
formated_string = 'I am %s %s. I am learning %s' % (
first_name, last_name, language)
print(formated_string)
# Strings and numbers
radius = 10
pi = 3.14
area = pi * radius ** 2
formated_string = 'The area of circle with a radius %d is %.3f.' % (
radius, area)
print(formated_string)
python_libraries = ['Django', 'Flask', 'NumPy', 'Matplotlib', 'Pandas']
formated_string = 'The following are python libraries:%s' % (python_libraries)
print(formated_string)
# Nuevo formato de cadena de estilo (str.format)
# esta version se introdujo en la version 3
first_name = 'Arturo'
last_name = 'Cabrera'
language = 'Python'
formated_string = 'I am {} {}. I am learning {}'.format(
first_name, last_name, language)
print(formated_string)
a = 4
b = 3
print('{} + {} = {}'.format(a, b, a + b))
print('{} - {} = {}'.format(a, b, a - b))
print('{} * {} = {}'.format(a, b, a * b))
# limits it to two digits after decimal
print('{} / {} = {:.2f}'.format(a, b, a / b))
print('{} % {} = {}'.format(a, b, a % b))
print('{} // {} = {}'.format(a, b, a // b))
print('{} ** {} = {}'.format(a, b, a ** b))
# Strings and numbers
radius = 10
pi = 3.14
area = pi * radius ** 2
formated_string = 'The area of a circle with a radius {} is {:.2f}.'.format(
radius, area) # 2 digits after decimal
print(formated_string)
# Interpolación de cadenas / f-Strings (Python 3.6+)
a = 4
b = 3
print(f'{a} + {b} = {a +b}')
print(f'{a} - {b} = {a - b}')
print(f'{a} * {b} = {a * b}')
print(f'{a} / {b} = {a / b:.2f}')
print(f'{a} % {b} = {a % b}')
print(f'{a} // {b} = {a // b}')
print(f'{a} ** {b} = {a ** b}')
# Cadenas de Python como secuencias de caracteres
# Las cadenas de Python son secuencias de caracteres y
# comparten sus métodos básicos de acceso con otras secuencias
# de objetos ordenadas de Python: listas y tuplas.
# La forma más sencilla de extraer caracteres individuales de cadenas (y miembros individuales de cualquier secuencia)
# es descomprimirlos en las variables correspondientes.
language = 'Python'
a, b, c, d, e, f = language # unpacking sequence characters into variables
print(a) # P
print(b) # y
print(c) # t
print(d) # h
print(e) # o
print(f) # n
# Acceso a caracteres en cadenas por índice
language = 'Python'
first_letter = language[0]
print(first_letter) # P
second_letter = language[1]
print(second_letter) # y
last_index = len(language) - 1
last_letter = language[last_index]
print(last_letter) # n
# Si queremos comenzar desde el extremo derecho, podemos usar la indexación negativa. -1 es el último índice.
language = 'Python'
last_letter = language[-1]
print(last_letter) # n
second_last = language[-2]
print(second_last) # o
# FORMATEANDO CADENAS
cadena = " esto es una cadena con espacios "
print(cadena)
print(cadena.capitalize())
print(cadena.strip().capitalize())
## EJERCICIOS:
### como podemos extraer la palabra "casa" de la siguiente cadena: "Tengo una casa roja" guardada en la variable frase?
frase = "Tengo una casa roja"
print(frase[frase.find('casa'):frase.find('casa')+len('casa')])
# CONDICIONALES
## if
EDAD = 18
edad_votante = int(input("Ingrese su edad: "))
if edad_votante < EDAD:
print("No tiene edad para Votar")
if edad_votante >= EDAD:
print("Felicidades Puede votar")
## else
edad_votante = int(input("Ingrese su edad: "))
if edad_votante < EDAD:
print("No tiene edad para Votar")
else:
print("Felicidades Puede votar")
## elif
### es importante que en caso de enteros, se debe evaluar de mayor a menor
edad_cinefilo = int(input("Ingrese su edad cinefilo: "))
if edad_cinefilo > 54:
print("Puede ver la pelicula con descuento")
elif edad_cinefilo > 17:
print("Puedes ver la pelicula")
else:
print("No puedes entrar")
print("Ve a otro lado")
print("Listo")
## ternario
edad_cinefilo = int(input("Ingrese su edad cinefilo: "))
mensaje = "Puede ver la pelicula" if edad_cinefilo > 18 else "no puedes entrar"
print(mensaje)
# OPERADORES LOGICOS
# and, or, not
gas = False
encendido = True
edad = 18
if gas and encendido and edad > 17:
print("Puedes avanzar")
if gas or encendido:
print("Puedes avanzar ve")
if not gas and (encendido and edad > 17):
print("No Puedes avanzar sin gas")
## tambien se puede hacer de la siguiente manera
edad = 25
if 15 <= edad <= 65:
print("puede entrar a la piscina")
# LISTAS
numeros = [1, 2, 3, 4, 5,]
print(numeros) # imprime la lista completa
print(numeros[1]) # imprime lo que esta en esa pocion que le pasemos
## lista de string
letras = ["a", "e", "i", "o", "u"]
print(letras)
palabras = ["algo", "esta", "interesante", "oculto", "universidad"]
print(palabras)
## lista de booleans
booleans = [True, False, True, False]
print(booleans)
## lista de listas
matriz = [[1, 1], [1, 0]]
print(matriz)
## unir listas
alfanumericos = numeros + letras
print(alfanumericos)
## range y list
lista = list(range(1, 4))
print(lista)
chars = list("aprendiendo con gnuxdar")
print(chars)
# MANIPULANDO LISTAS
users = ["gnuxdar", "admin", "newbie", "jedi"]
print(users)
users[3] = "yoda"
print(users)
print(users[1:]) # desde la posicion 1 hasta el ultimo
print(users[-1]) # con negativos (-) va desde el ultimo al primero de la lista, -1, -3, -N
print(users[::2]) # imprime los pares, comeinza desde el inicio y va a (dos) despues: ['gnuxdar', 'newbie']
print(users[1::2]) # immprime desde la posicion 1 (el segundo) y luego a cada dos:
numeros = list(range(21))
print(numeros[::2]) # imprime los numero pares de esa list
print(numeros[1::2]) # imprime los numero impares de esa list (inicio::cada tantos numeros)
# DESEMPAQUETAR LISTAS
numeros = [1, 2, 3]
# manera incorrecta!
# primero = numeros[0]
# segundo = numeros[1]
# tercero = numeros[2]
# print(primero, segundo, tercero)
primero, segundo, tercero = numeros
# aca se le asigna dinamicamente a cada variable un valor de una posicion
print(primero, segundo, tercero)
print(segundo) # podemos acceder al valor de la variable
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# despues de declarar una variable despues de *otros, esta reseva el valor de N variables que se asignen, cada variable es un valor de la lista
primero, *otros, ultimo = numeros
print(primero, ultimo, otros)
# iterar listas
mascotas = ["zeus", "thitan", "sky"]
for mascota in enumerate(mascotas):
# Devuelve un objeto de enumeración. iterable debe ser una secuencia, un iterador o algún otro objeto que soporte la iteración.
# El método __next__() del iterador devuelto por enumerate() devuelve una tupla que contiene un recuento
# (desde el inicio, que por defecto es 0) y los valores obtenidos al iterar sobre iterable.
print(mascota)
# print(mascota[0]) # [0] la posicion de la lista, [1] el valor de la lista
# acceder a los indices de una lista
for indice, mascota in enumerate(mascotas):
print(indice, mascota)
# buscar el indice de elementos en una lista
mascotas = ["zeus", "titan", "sky", "titan"]
# index() muestra el indice del elemento en la lista
print(mascotas.index("titan"))
# contar elementos de una lista
mascotas = ["zeus", "titan", "sky", "titan"]
# count() cuenta, cuantos de esos elementos en la lista hay
print(mascotas.count("titan"))
if "titan" in mascotas: # valida si existe en al lista
print(mascotas.index("titan"))
# agregando y eliminando elementos de una lista
mascotas = ["zeus", "titan", "sky", "titan"]
# Inserte un nuevo elemento con valor x en la matriz antes de la posición i. Los valores negativos se tratan como relativos al final de la matriz.
mascotas.insert(2, "downie")
mascotas.append("beta") # inserta un elemento al final de la lista
mascotas.remove("titan") # elimina la primera coincidencia que exista
mascotas.pop() # elimina el ultimo elemento de la lista
# elimina el elemento de la lista, que este en el indice que le pasemos
mascotas.pop(2)
# parecido al anterior, pero influye directamente en la posicion o indice
del mascotas[1]
mascotas.clear() # como su nombre lo indica, limpia por completo la lista
print(mascotas)
# ordenando listas
numeros = [10, 23, 50, 5, 12, 30]
# numeros.sort() # ordena la lista
# numeros.sort(reverse=True) # ordena la lista de forma descendente
numeros2 = sorted(numeros) # crea una copia nueva lista
# tambien podemos ordenarla alreves de la misma manera que antes
numeros2 = sorted(numeros, reverse=True)
print(numeros)
print(numeros2)
# ordenando listas de listas
# siempre y cuando el primer valor de las sublistas sean numeros
users = [
[1, "admin"],
[7, "gnuxdar"],
[5, "grebo"]
]
users.sort()
print(users)
# otro metodo para ordenar
users = [
["admin", 1],
["gnuxdar", 7],
["grebo", 5]
]
users.sort(key=lambda el: el[1], reverse=True) # reverse=True es opcional
print(users)
# listas de comprension
users = [
["admin", 1],
["gnuxdar", 7],
["grebo", 5]
]
# crear un listado de nombres
names = []
for user in users:
names.append(user[0])
print(names)
# forma mas corta de hacerlo
# names = [expresion for item in items]
names = [user[0] for user in users]
# names = [name[0] for name in names] # imprimir la primera letra de cada item
print(names)
# listas con map() y filter()
# map() para tranformar a los usuarios
users = [
["admin", 1],
["gnuxdar", 7],
["grebo", 5]
]
names = list(map(lambda user: user[0], users))
print(names)
# filter()
menos_users = list(filter(lambda user: user[1] > 2, users))
print(menos_users)
# sets: grupo o conjunto
primer = {1, 1, 1, 9, 1, 2, 2, 3, 3, 6}
primer.add(10)
primer.remove(1)
print(primer)
# convertir una lista a un set
segundo = [4, 4, 2, 8, 2, 3, 7, 7, 5, 5, 5]
segundo = set(segundo)
print(segundo)
# unir sets
print(primer | segundo)
# interseccion, devuelve lo que se enceuntren en las dos listas
print(primer & segundo)
# diferencia
print(primer - segundo)
# diferencia simetrica
print(primer ^ segundo)
# tuplas, son como las listas, pero estas no se pueden editar
users = ("Arturo", "gnuxdar")
print(users)
odd_numbers = (1, 3, 5, 7, 9)
pair_numbers = (2, 4, 6, 8)
print(odd_numbers + pair_numbers)
# como convertir una lista a una tupla
lista = [1, 2]
print(type(lista))
converter = tuple(lista)
print(type(converter))
# en las tuplas se puedehacer todo lo que se hace con una lista, pero que no edite o elimine
menosNumeros = odd_numbers[:2]
print(menosNumeros)
primero, segundo, *otros = odd_numbers
print(primero, segundo, otros)
for n in odd_numbers:
print(n)
# en tal caso de editar una tupla, esta se tendra que pasar a list, en realidad, se crea una list en base de la tupla
lista_numeros = list(odd_numbers)
lista_numeros[0] = "uno"
print(type(lista_numeros), lista_numeros)
# diccinarios: Una matriz asociativa, donde las claves arbitrarias se asignan a valores.
# Las claves pueden ser cualquier objeto con los métodos __hash__() y __eq__(). Llamado hash en Perl
user = {
"id": 2,
"name": "Arturo",
"lastname": "Cabrera",
"nickname": "gnuxdar"
}
print(user)
print(user["name"])
# agregar
user["age"] = 33
print(user)
# como acceder a un elemento y que muestre None si no existe
print(user.get("nickname"))
print(user.get("idiota")) # None, si no existe
# mostrar un valor por defecto si loq ue se busca no existe
print(user.get("idiota", "no eres tu"))
# eliminar
del user["lastname"]
print(user)
del (user["age"])
print(user)
# iterar un diccionario
for value in user:
print(value, user[value])
# una mejor manera de acceder a los itms de un diccionario
for value in user.items():
print(value) # devuelve tuplas del, donde en cada una ess llave valor
for key, value in user.items():
print(key, value)
# lista de diccionarios
users = [
{"id": 5, "name": "Arturo"},
{"id": 6, "name": "Jose"},
{"id": 7, "name": "Alexa"},
{"id": 8, "name": "Rosa"},
]
for value in users:
print(value["name"])