Usar un bucle for para encontrar valores mínimos y guardar los resultados en una listaTengo tres listas de números:
a= {2,3,4,5,6}
b = {4,5,7,2,1}
c= {9,6,4,6,2}
Me gustaría tomar el mínimo de cada índice de las 3 listas y convertirlo en una lista, digamos d. entonces d = {2,3,4,2,1}.
El bucle que he iniciado es:
minsl = {};
para(i = 1, i = 6, i++,
minutos = {a[i], b[i], c[i]};
minval = mínimo(mins);
minsl=insertar en(minsl,minval,i);
If(n items(minsl)==5, break()); // esta línea se agregó para detener el bucle porque se queda atascado
);
La salida es minsl = {1,1,1,1,1}, es decir, se queda atascado almacenando solo la última entrada de la lista (y continúa para siempre sin la línea de salto), cuando debería ser {2,3,4,2,1}
¿Alguna sugerencia sobre cómo solucionarlo? ¡¡Gracias!!
Automatización y scriptingRe: uso del bucle for para encontrar valores mínimos y guardar los resultados en una listaNo pensé en esto, buena idea, ¡gracias!
Re: uso del bucle for para encontrar valores mínimos y guardar los resultados en una lista¡¡gracias!!:)
Re: uso del bucle for para encontrar valores mínimos y guardar los resultados en una listaTambién puedes usar matrices + V Min() para esto (recuerda comentar el código para que sea más fácil de entender si es necesario)
Names Default To Here(1);
a = {2, 3, 4, 5, 6};
b = {4, 5, 7, 2, 1};
c = {9, 6, 4, 6, 2};
m = Matrix(a)` |/ Matrix(b)` |/ Matrix(c)`;
d = As List(V Min(m)`); // {2, 3, 4, 2, 1}
Re: uso del bucle for para encontrar valores mínimos y guardar los resultados en una listaSu bucle For() de
For( i = 1, i = 5, i++,
necesita ser
For( i = 1, i <= 5, i++,
Entonces parece funcionar como quieres.
names default to here( 1 );
a = {2, 3, 4, 5, 6};
b = {4, 5, 7, 2, 1};
c = {9, 6, 4, 6, 2};
minsl = {};
For( i = 1, i <= 5, i++,
mins = a[i] || b[i] || c[i];
minval = Minimum( mins );
Insert Into( minsl, minval );
);Re: uso del bucle for para encontrar valores mínimos y guardar los resultados en una listaa = {2, 3, 4, 5, 6};
b = {4, 5, 7, 2, 1};
c = {9, 6, 4, 6, 2};
minsl = {};
i = 1;
mins = {a[i],b[i],c[i]};
minval = minimum(mins);
insert into (minsl,minval,i);
i=2;
mins = {a[i],b[i],c[i]};
minval = minimum(mins);
insert into (minsl,minval,i);
i = 3;
mins = {a[i],b[i],c[i]};
minval = minimum(mins);
insert into (minsl,minval,i);
i = 4;
mins = {a[i],b[i],c[i]};
minval = minimum(mins);
insert into (minsl,minval,i);
minsles decir, lo anterior funciona, pero me gustaría que funcionara un bucle cuando tengo listas de longitudes mucho más largas.
Re: uso del bucle for para encontrar valores mínimos y guardar los resultados en una lista¡Gracias! Sin embargo, esto no parece conservar el orden. Básicamente, necesito extraer el valor mínimo del primer índice de las 3 listas y luego almacenarlo en una lista (conservando el orden).
a = {2, 3, 4, 5, 6};
b = {4, 5, 7, 2, 1};
c = {9, 6, 4, 6, 2};
minsl = {};
for(i = 1, i = 5, i++,
mins = {a[i],b[i],c[i]};
minval = minimum(mins);
insert into (minsl,minval,i);
If(n items(minsl)==5, break());
);Si ejecuta el código anterior ignorando el bucle real y hace i = 1, y luego ejecuta solo el interior del bucle y luego pone i = 2 y ejecuta el interior del bucle, funciona (verá minsl = {2,3}) pero por alguna razón el bucle no se cicla correctamente y se rompe
Re: uso del bucle for para encontrar valores mínimos y guardar los resultados en una listaAsí es como yo abordaría el tema.
names default to here(1);
a = {2, 3, 4, 5, 6};
b = {4, 5, 7, 2, 1};
c = {9, 6, 4, 6, 2};
a1= sortlist(a);
remove from(a1,3,n=length(a)-2);
b1= sortlist(b);
remove from(b1,3,n=length(b)-2);
c1= sortlist(c);
remove from(c1,3,n=length(c)-2);
d=a1||b1||c1;
Además, utilice el icono en la parte superior de la ventana de vista previa al ingresar el código del script. Permite que el lector lea el código más fácilmente.