Quiero escribir una función que reviva una lista [1,5,3,6,...]
y da [1,1,5,5,3,3,6,6,...]
alguna idea de cómo hacerlo? graciasduplicar cada miembro en una lista - python
Respuesta
>>> a = [1, 2, 3]
>>> b = []
>>> for i in a:
b.extend([i, i])
>>> b
[1, 1, 2, 2, 3, 3]
o
>>> [a[i//2] for i in range(len(a)*2)]
[1, 1, 2, 2, 3, 3]
Debería usar '//' para la división del piso en Python 2, también. –
@Mike: seguro que tienes razón, excepto por supuesto en la división '/' asegura que 'int' sea devuelto. – SilentGhost
>>> a = range(10)
>>> [val for val in a for _ in (0, 1)]
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9]
N. B. _
se usa tradicionalmente como un nombre de variable de marcador de posición en el que no desea hacer nada con el contenido de la variable. En este caso, solo se usa para generar dos valores para cada vuelta del ciclo externo.
Para convertir esto de una lista en un generador, reemplace los corchetes por corchetes.
'_' es, en estos días, utilizado para i18n/l10n (google). Todavía tiendo a usarlo * si * Sé que no habrá un i18n en este módulo. Else I (usaría) '__' (dos guiones bajos). –
usaría
import itertools
foo = [1, 5, 3, 6]
new = itertools.chain.from_iterable([item, item] for item in foo)
new
habrá un iterador que perezosamente itera sobre los elementos duplicados. Si necesita la lista real calculada, puede hacer list(new)
o utilizar una de las otras soluciones.
o más corto: 'itertools.chain.from_iterable (itertools.izip (foo, foo))' –
Consideré ese código que es más corto pero no me pareció más claro. –
Si ya tiene la receta roundrobin
se describe en la documentación de itertools
-y que queda muy cerca, a continuación, puedes utilizar
roundrobin(my_list, my_list)
+1, esta es una buena manera de lograr esto. –
Por mucho que Guido no le gustan los operadores funcionales, que pueden ser bastante zurcido útil:
>>> from operator import add
>>> a = range(10)
>>> b = reduce(add, [(x,x) for x in a])
En el caso de reducir, a menudo significa increíblemente lento. Es importante medir lo que 'reduce 'está haciendo. A menudo, es impactante cuánto cómputo reduce las fuerzas. –
Hice un script de prueba con cada uno de los métodos en esta página con el baselist = range (10) y 1,000,000 de iteraciones. El más lento tomó 5.094 segundos y el más rápido tardó 3.622 segundos. Mi ejemplo de reducción tomó 3.906 segundos. –
'rango (10)' es muy pequeño, por lo que la complejidad tiene un rol pequeño. Esta solución es cuadrática. todos los otros que veo aquí son lineales. Además, algunos de los otros me parecen más legibles. –
me gustaría utilizar zip
y itertools.chain
.
>>> import itertools
>>> l = [1,5,3,6,16]
>>> list(itertools.chain(*zip(l,l)))
[1, 1, 5, 5, 3, 3, 6, 6, 16, 16]
Nota: sólo se utiliza list
consumir el generador para que se ajuste para imprimir. Probablemente no necesite la llamada list
en su código ...
Es posible la multiplicación de la lista de uso. Si necesita que cada miembro de la lista solo use el método ordenado.
>>> lst = [1,2,3,4]
>>> sorted(lst*2)
[1,1,2,2,3,3,4,4]
¿Qué tal si quieres mantener el orden de la lista original? ¿Qué pasa si los artículos de la lista no son pedidos? – Moberg
- 1. objeto por su miembro dentro de una lista en Python
- 2. ¿Miembro estático de una función en Python?
- 3. Cómo iterar sobre una lista repitiendo cada elemento en Python
- 4. Python: ¿Cuánto espacio ocupa cada elemento de una lista?
- 5. ¿Duplicar una fila en SQL?
- 6. Funciones de miembro no miembro frente a miembro en Python
- 7. Agregar una cadena delante de una cadena para cada elemento en una lista en python
- 8. ¿Cómo ejecuto cada comando en una lista?
- 9. Operación en cada par de elementos en una lista
- 10. ¿Por qué no hay una función para cada miembro para cada tipo de colección en stl?
- 11. Añadir un punto entre cada objeto ya en la lista
- 12. ¿Pasa cada elemento de una lista a una función que toma múltiples argumentos en Python?
- 13. Realice una operación de cadena para cada elemento en una lista de Python
- 14. Segmente una lista en Python
- 15. Emulando una lista en Python
- 16. ¿Desempaquetar una lista en Python?
- 17. ¿Cómo puedo sumar el primer valor en cada tupla en una lista de tuplas en Python?
- 18. ¿Restar un valor de cada número en una lista en Python?
- 19. límite "cada una" lista de rieles
- 20. ¿pueden usarse las funciones miembro para inicializar las variables miembro en una lista de inicialización?
- 21. Comprobando la existencia del miembro en Python
- 22. R rep() en Python (replica elementos de una lista/vector)
- 23. Clasificación Python - Una lista de objetos
- 24. Python - Convierte una cadena a la lista
- 25. elementos divididos de una lista en python
- 26. Looping sobre una lista en Python
- 27. Obtener cada archivo en un directorio, Python
- 28. División de una lista de Python por un personaje en cada elemento
- 29. En Squirrel, ¿cómo puedo duplicar una fila?
- 30. a una función miembro en el depurador de Python
Sonidos a la orden del día. Hay mejores formas de trabajar con una lista que duplicar los elementos. –