Ich bin ein Noob in Python 3, ich komme aus Java und Javascript.

Wie kann ich gehen

a = ['a', 'b', 'c']
b = [1, 2, 3]
c = ['red', 'green', 'blue']

Zu

x = [ ['a', 1, 'red'], ['b', 2, 'green'], ['c', 3, 'blue'] ] 

Auf einfache Weise, ohne eine Schleife zu verwenden (while / for / map)?

Vielen Dank

0
Patrick M. 18 Apr. 2018 im 14:44

4 Antworten

Beste Antwort

Dafür wurde das eingebaute zip entwickelt. zip nimmt eine beliebige Anzahl von Iterablen und gibt Tupel mit Elementen aus entsprechenden Indizes zurück.

>>> a = ['a', 'b', 'c']
>>> b = [1, 2, 3]
>>> c = ['red', 'green', 'blue']
>>> list(map(list, zip(a, b, c)))
[['a', 1, 'red'], ['b', 2, 'green'], ['c', 3, 'blue']]

Die von zip generierten Tupel werden hier explizit in Listen konvertiert, da Sie Listen angefordert haben. Wenn es keinen besonderen Grund gibt, Listen anstelle von Tupeln zu haben, verwenden Sie einfach

>>> list(zip(a, b, c))
[('a', 1, 'red'), ('b', 2, 'green'), ('c', 3, 'blue')]
3
timgeb 18 Apr. 2018 im 13:18
def combine_list(*args):
     return map(list, args)

final = list(combine_list(a,b,c))

Es wird sein wie:

[['a', 'b', 'c'], [1, 2, 3], ['rot', 'grün', 'blau']]

1
jahmed31 18 Apr. 2018 im 13:07

Angenommen, alle Listen haben die gleiche Länge, können Sie das Listenverständnis verwenden

X = [[a [i], b [i], c [i]] für i im Bereich (len (a))]

Dies führt zu

[['a', 1, 'rot'], ['b', 2, 'grün'], ['c', 3, 'blau']]

2
Jean Metz 18 Apr. 2018 im 11:50

Wie Sie bereits erwähnt haben, "auf einfache Weise, ohne eine Schleife (while / for / map) zu verwenden"

Dies war der einfachste Ansatz, den ich mir vorstellen konnte:

Definieren Sie zunächst a, b, c, die Daten enthalten, p, q, r als temporäre Liste und eine leere Liste x, um die endgültige Ausgabe zu speichern. Verwenden Sie einfach die Funktion zum Anhängen der Liste nacheinander, um a, b und c an x anzuhängen. Drucken Sie x und Sie erhalten eine Liste mit Listen ohne for-Schleife! Aber es geht um zusätzliches Gedächtnis und das Tippen von Enten.

    a = ['a', 'b', 'c']
    b = [1, 2, 3]
    c = ['red', 'green', 'blue']

    p = []
    q = []
    r = []

    x = []

    p.append(a[0])
    p.append(b[0])
    p.append(c[0])

    q.append(a[1])
    q.append(b[1])
    q.append(c[1])

    r.append(a[2])
    r.append(b[2])
    r.append(c[2])

    x.append(p)
    x.append(q)
    x.append(r)

    print(x)
0
Yash Ghorpade 18 Apr. 2018 im 13:09