valores una tuplas tupla tamaño son qué obtener llenar listas lista las hacer convertir como acceder python list tuples

una - qué son las tuplas en python



¿Cómo fusionar listas en una lista de tuplas? (8)

En Python 3.0 zip devuelve un objeto zip. Puede obtener una lista de ella llamando a la list(zip(a, b)) .

¿Cuál es el enfoque Pythonic para lograr lo siguiente?

# Original lists: list_a = [1, 2, 3, 4] list_b = [5, 6, 7, 8] # List of tuples from ''list_a'' and ''list_b'': list_c = [(1,5), (2,6), (3,7), (4,8)]

Cada miembro de list_c es una tupla, cuyo primer miembro es de list_a y el segundo es de list_b .


Estás buscando la función incorporada zip .


La salida que mostró en la declaración del problema no es la tupla sino la lista

list_c = [(1,5), (2,6), (3,7), (4,8)]

comprobar

type(list_c)

considerando que deseas el resultado como tupla fuera de list_a y list_b, haz

tuple(zip(list_a,list_b))


No estoy seguro de si esta es una forma pitónica o no, pero parece simple si ambas listas tienen el mismo número de elementos:

list_a = [1, 2, 3, 4] list_b = [5, 6, 7, 8] list_c=[(list_a[i],list_b[i]) for i in range(0,len(list_a))]


Puedes usar el mapa lambda

a = [2,3,4] b = [5,6,7] c = map(lambda x,y:(x,y),a,b)

Esto también funcionará si las longitudes de las listas originales no coinciden


Sé que esta es una pregunta antigua y ya fue respondida, pero por alguna razón, todavía quiero publicar esta solución alternativa. Sé que es fácil simplemente descubrir qué función incorporada hace la "magia" que necesitas, pero no duele saber que puedes hacerlo por ti mismo.

>>> list_1 = [''Ace'', ''King''] >>> list_2 = [''Spades'', ''Clubs'', ''Diamonds''] >>> deck = [] >>> for i in range(max((len(list_1),len(list_2)))): while True: try: card = (list_1[i],list_2[i]) except IndexError: if len(list_1)>len(list_2): list_2.append('''') card = (list_1[i],list_2[i]) elif len(list_1)<len(list_2): list_1.append('''') card = (list_1[i], list_2[i]) continue deck.append(card) break >>> >>> #and the result should be: >>> print deck >>> [(''Ace'', ''Spades''), (''King'', ''Clubs''), ('''', ''Diamonds'')]


Una alternativa sin usar zip :

list_c = [(p1, p2) for idx1, p1 in enumerate(list_a) for idx2, p2 in enumerate(list_b) if idx1==idx2]

En caso de que uno quiera obtener no solo las tuplas primero con primero, segundo con segundo ... pero todas las combinaciones posibles de las 2 listas, eso se haría con

list_d = [(p1, p2) for p1 in list_a for p2 in list_b]


>>> list_a = [1, 2, 3, 4] >>> list_b = [5, 6, 7, 8] >>> zip(list_a, list_b) [(1, 5), (2, 6), (3, 7), (4, 8)]