Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
listas
#1
muy buenas disculpen me podrian ayudar explicando como puedo puedo dividir los valores de una lista
ya que tengo dos listas y quisiera dividir una cierta cantidad de elementos de una lista.
ejemplo
mis dos listas serian:

profesores ['juan','pedro','mario','david',arturo','alejandro']
materias['matematicas','lenguaje','dibujo,'arquitectura,'programacion']

ahora lo qu quiero que haga es que a cada uno de los profesores se le asigne una cantidad igual de materias.
si sobran materias me mande un mensaje o me pida ingresar una materia mas
Responder
#2
Hola. Si tenés la misma cantidad de elementos en ambas listas podés usar la función zip. Por ejemplo:

Código:
profesores = ['juan','pedro','mario','david','arturo']
materias = ['matematicas','lenguaje','dibujo','arquitectura','programacion']

print(zip(profesores, materias))

El resultado es el siguiente:

Código:
[('juan', 'matematicas'), ('pedro', 'lenguaje'), ('mario', 'dibujo'), ('david', 'arquitectura'), ('arturo', 'programacion')]

De esta forma luego puedes recorrer la lista obtenida:

Código:
for profesor, materia in zip(profesores, materias):
    print(profesor, materia)

Para determinar si faltan materias o profesores tendrás que chequear la cantidad de elementos en cada lista.

Código:
profesores = ['juan','pedro','mario','david','arturo']
materias = ['matematicas','lenguaje','dibujo','arquitectura','programacion']

if len(profesores) == len(materias):
    print(zip(profesores, materias))
elif len(profesores) > len(materias):
    print("Faltan materias")
else:
    print("Faltan profesores")

Si cada profesor puede contener múltiples materias, entonces habría qué determinar un parámetro en el cual basarse para realizar la asignación.

Un saludo.
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
(11-12-2016, 02:16 PM)Francisco escribió: Hola. Si tenés la misma cantidad de elementos en ambas listas podés usar la función zip. Por ejemplo:

Código:
profesores = ['juan','pedro','mario','david','arturo']
materias = ['matematicas','lenguaje','dibujo','arquitectura','programacion']

print(zip(profesores, materias))

El resultado es el siguiente:

Código:
[('juan', 'matematicas'), ('pedro', 'lenguaje'), ('mario', 'dibujo'), ('david', 'arquitectura'), ('arturo', 'programacion')]

De esta forma luego puedes recorrer la lista obtenida:

Código:
for profesor, materia in zip(profesores, materias):
    print(profesor, materia)

Para determinar si faltan materias o profesores tendrás que chequear la cantidad de elementos en cada lista.

Código:
profesores = ['juan','pedro','mario','david','arturo']
materias = ['matematicas','lenguaje','dibujo','arquitectura','programacion']

if len(profesores) == len(materias):
    print(zip(profesores, materias))
elif len(profesores) > len(materias):
    print("Faltan materias")
else:
    print("Faltan profesores")

Si cada profesor puede contener múltiples materias, entonces habría qué determinar un parámetro en el cual basarse para realizar la asignación.

Un saludo.
Gracias por tu explicacion saves me interson baste esa funcion zip() pero no es lo que quiero  ya que lo que yo propongo es que en mi lista de profesores tenga tres o mas elementos o nombres y que mi lista de materias tenga seis o mas .
Si divides (materias/profesores)
tendre el tamaño  de cuantos elementos o materias le corresponderian a cada profesor en este caso serian dos materias pero asta ahy me he quedado.no tengo claro que deberia hacer
 print("todas las materias:",list_Materias)
 print("Todos los profesores:",List_Nombres_Profesores)
tamano=int(len(list_Materias)/len(List_Nombres_Profesores)) #
print("este es el tamano",tamano)
for i in range(1,tamano+1):
Responder
#4
Bien. Si quieres establecer una condición para la cantidad de materias y profesores, puedes usar len(profesores) >= 3 y len(materias) >= 6. No estaría entendiendo el segundo paso, ¿crear una nueva lista o determinar si las materias se pueden distribuir de manera equitativa entre los profesores? En este último caso, puedes utilizar:

Código:
res = len(materias) / len(profesores)
puede_distribuirse = int(res) == res

La división dará un resultado con números decimales si no pueden distribuirse las maneras en iguales proporciones. Así, int(res) == res y por ende puede_distribuirse == True cuando puedan repartirse equitativamente.

Saludos.
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)