Mensajes: 2
Temas: 1
Registro en: Dec 2016
Reputación:
0
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
Mensajes: 1.300
Temas: 3
Registro en: Feb 2016
Reputación:
71
11-12-2016, 02:16 PM
(Última modificación: 11-12-2016, 02:16 PM por Francisco.)
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.
Mensajes: 2
Temas: 1
Registro en: Dec 2016
Reputación:
0
14-12-2016, 03:12 AM
(Última modificación: 14-12-2016, 03:14 AM por bryanmiomi@hotmail.com.)
(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):
Mensajes: 1.300
Temas: 3
Registro en: Feb 2016
Reputación:
71
14-12-2016, 04:51 PM
(Última modificación: 14-12-2016, 04:52 PM por Francisco.)
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.
|