list.append(elapse):
       if len(list) > 50:
          raise Exception(list_2.append(elapse))
       else:
          list.append(elapse)

No tengo idea de cómo formatear esto, solo lo quiero para que una vez que list[] llegue a grande, las nuevas entradas se desvíen a list_2[], mi código original no tenga raise Exception() solo { {X3}}. Solo estoy en la secundaria, semana 6 de ciencias de la computación, así que no sé demasiada jerga.

1
End Globalism 5 mar. 2018 a las 00:22

4 respuestas

La mejor respuesta

Simplemente puede usar una construcción if / else de esta manera:

if len(lst_1) >= 50:
    lst_2.append(elapse)
else:
    lst_1.append(elapse)

Pero piense en su caso de uso. Considere estas preguntas:

  • ¿Por qué está limitado el tamaño de su lista? ¿Es esto algo que puede explicarse aguas abajo?
  • ¿Tendrás un número indefinido de listas? Si es así, considere usar un diccionario de listas o una lista de listas.
3
jpp 4 mar. 2018 a las 22:24

Simplemente haga una lista de 2 capas:

mainList = [] # create the mainList to hold each list with 50 values in 
while True:
    innerList = [] # create the list to hold the 50 items
    for x in range(50): # run through your code 50 times to add 50 items to the list
        yourValue = 0 # your code to add to the list
        innerList.append(yourValue) # add the value
    mainList.append(innerList) # add the list of 50 values to the mainList

Esto significa que puede tener un número interminable de 50 listas de elementos en lugar de limitarse a un número codificado de listas :)

3
Zak Stucke 4 mar. 2018 a las 21:38

Usted decide qué lista agregar con, por ejemplo, un operador ternario :

list_to_append = list1 if len(list1) < 50 else list2
list_to_append.append(elapse)

Entonces, primero verificamos si len(list1) < 50. Si ese es el caso, establecemos list_to_append = list1, de lo contrario, establecemos list_to_append = list2. Luego anexamos a esa lista.

No nombre variables como list, set, dict, etc. Ya que esto anulará la referencia a las clases con el mismo nombre.

1
Willem Van Onsem 4 mar. 2018 a las 21:39

En primer lugar, no puede nombrar un list porque list es un nombre construido en Python.

Así que llámalos list1 y list2 (Cualquier cosa menos list.

Por supuesto, no plantea una excepción como lo hizo en python.

list1 = []
list2 = []
if len(list1) > 50: # Check if list1 is full
    list_2.append(elapse) # append to list2 if list1 is full
else:
    list1.append(elapse)   #if list1 is not > 50, append to list1 

Si lo desea, puede usar elif para verificar la longitud de list2.

Puede tener tantas declaraciones elif como desee, pero else siempre es la última.

list1 = []
list2 = []
if len(list1) > 50:
    list_2.append(elapse)
elif list2 > 50:
    print('OUT OF LISTS!!')
else:
    list1.append(elapse) 

Si desea capturar excepciones, es decir, si no es una lista, puede ajustarla en un estado try / except.

list1 = []
list2 = []
try:
    if len(list1) > 50:
        list_2.append(elapse)
    elif list2 > 50:
        print('OUT OF LISTS!!')
    else:
        list1.append(elapse)
except TypeError:
    print('Not a List!!')

Algunas lecturas para ti:

Manejo de errores: https://docs.python.org/3/tutorial/errors.html

if / elif`: https://docs.python.org/3/tutorial/controlflow.html

1
johnashu 4 mar. 2018 a las 21:36