una tuplas sacar misma metodos llenar listas lista elementos comparar cambiar arreglos agregar python list order

tuplas - sacar elementos de una lista python



¿Cómo cambiar la posición de dos elementos en una lista de Python? (7)

No he podido encontrar una buena solución para este problema en la red (probablemente porque el cambio, la posición, la lista y Python son todas esas palabras sobrecargadas).

Es bastante simple, tengo esta lista:

[''title'', ''email'', ''password2'', ''password1'', ''first_name'', ''last_name'', ''next'', ''newsletter'']

Me gustaría cambiar la posición de ''password2'' y ''password1'' , sin saber su posición exacta, solo que están uno al lado del otro y la password2 es lo primero.

Lo he logrado con algunos subíndices de listas bastante prolijas, pero me preguntaba si sería posible encontrar algo un poco más elegante.


¡Guauu! ¡Hay una manera mucho más estándar (aplicable a todos los idiomas), simple y más corta!

x = i[2]; i[2] = i[3]; i[3] = x

Simple es mejor que complejo

Nota: si no conoce el puesto:

index = list.index("password1") # = 3 in the given list


¿Cómo puede ser más largo que

tmp = my_list[indexOfPwd2] my_list[indexOfPwd2] = my_list[indexOfPwd2 + 1] my_list[indexOfPwd2 + 1] = tmp

Eso es solo un intercambio simple usando almacenamiento temporal.


Dadas sus especificaciones, utilizaría la asignación de sectores:

>>> L = [''title'', ''email'', ''password2'', ''password1'', ''first_name'', ''last_name'', ''next'', ''newsletter''] >>> i = L.index(''password2'') >>> L[i:i+2] = L[i+1:i-1:-1] >>> L [''title'', ''email'', ''password1'', ''password2'', ''first_name'', ''last_name'', ''next'', ''newsletter'']

El lado derecho de la asignación de división es una "porción invertida" y también se puede deletrear:

L[i:i+2] = reversed(L[i:i+2])

si lo encuentras más legible, muchos lo harían.


El simple intercambio de Python se ve así:

foo[i], foo[j] = foo[j], foo[i]

Ahora todo lo que necesita hacer es calcular lo que soy, y eso se puede hacer fácilmente con el index :

i = foo.index("password2")


No soy un experto en python, pero podrías intentarlo: decir

i = (1,2) res = lambda i: (i[1],i[0]) print ''res(1, 2) = {0}''.format(res(1, 2))

arriba daría o / p como:

res(1, 2) = (2,1)


puedes usar por ejemplo:

>>> test_list = [''title'', ''email'', ''password2'', ''password1'', ''first_name'', ''last_name'', ''next'', ''newsletter''] >>> reorder_func = lambda x: x.insert(x.index(''password2''), x.pop(x.index(''password2'')+1)) >>> reorder_func(test_list) >>> test_list ... [''title'', ''email'', ''password1'', ''password2'', ''first_name'', ''last_name'', ''next'', ''newsletter'']


i = [''title'', ''email'', ''password2'', ''password1'', ''first_name'', ''last_name'', ''next'', ''newsletter''] a, b = i.index(''password2''), i.index(''password1'') i[b], i[a] = i[a], i[b]