2016-05-18 19 views
-4

Ich habe diese Liste der Listen:Gibt es eine Möglichkeit, eine 2D-Liste (Liste von Listen) in 2 oder mehr separate 1-dimensionale Listen mit for-Schleife zu teilen?

a = [[741.0, 743.0, 3386.0, 284577.0, 290611.0, 300889.0, 305256.0, 917458.0, 917905.0, 917906.0, 922187.0, 925852.0, 1260021.0, 1377096.0, 1524210.0, 1680657.0, 1692571.0, 1692645.0, 1692647.0, 1713958.0, 1801008.0, 1818975.0, 1858888.0, 1880544.0, 1880898.0, 1880899.0, 1880900.0, 1881062.0, 1881073.0, 1881240.0, 1881433.0, 1881434.0, 1881435.0, 1881436.0, 1881438.0, 1958358.0, 1958478.0, 1958479.0, 1958481.0, 1967310.0], [0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] 

und ich möchte zwei verschiedene 1 Dimension-Listen erstellen: for-Schleife

b[0] = [741.0, 743.0, 3386.0, 284577.0, 290611.0, 300889.0, 305256.0, 917458.0, 917905.0, 917906.0, 922187.0, 925852.0, 1260021.0, 1377096.0, 1524210.0, 1680657.0, 1692571.0, 1692645.0, 1692647.0, 1713958.0, 1801008.0, 1818975.0, 1858888.0, 1880544.0, 1880898.0, 1880899.0, 1880900.0, 1881062.0, 1881073.0, 1881240.0, 1881433.0, 1881434.0, 1881435.0, 1881436.0, 1881438.0, 1958358.0, 1958478.0, 1958479.0, 1958481.0, 1967310.0] 

und

b[1] = [0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

mit ein, so dass ich kann dasselbe tun, wenn ich 3 oder mehr Listen innerhalb der a-Liste habe ...

+0

Müssen Sie eine for-Schleife verwenden? Es ist möglicherweise einfacher, nur auf die verschachtelten Listen nach Index zu verweisen. Zum Beispiel '' a [0] = myOneDimensionalListOne'' und '' a [1] = myOneDimensionalListTwo''. – Igor

+1

Verwenden Sie ein einfaches Auspacken 'b0, b1 = a' – Kasramvd

+1

@Kasramvd woah, ich dachte du nur diese mit Tupeln tun könnte. Ordentlich! Gut zu wissen. – Igor

Antwort

2

"Ich verstehe, was Sie sagen..lets nehme an, dass ich die Liste der Listen habe ... wie kann ich eine Liste von Listen mit den Unterschieden zwischen den Werten aus jeder Liste von einem - Thanos Smar 1 erstellen Stunde vor "

Wenn die Liste eine [0] genannt wird oder a macht keinen Unterschied, Sie tun es genau die gleiche Weise, außer Sie Schleife über a [0] [x] .. a [1] [ x] ... statt a [x] ... b [x] .... Es wäre nicht einfacher, sie als separate Listen zu haben, es ist genau dasselbe. Grundsätzlich haben Sie sie bereits als separate Variablen, sie werden nur als [0] ... a [1] und so weiter bezeichnet.

EDIT - Dies ist ein Weg sein würde, es zu tun:

>>> mylist = [[6, 6, 6], [1, 1, 1], [1, 2, 3]] 
>>> mylist2 = list(mylist[0]) 
>>> for x in range(1, len(mylist)): 
     for y in range(0, len(mylist[x])): 
      mylist2[y] = mylist2[y] - mylist[x][y] 


>>> mylist2 
[4, 3, 2] 
>>> 

mit mylist2 = list (mylist [0]) macht es eine neue Liste und nicht die Werte der ursprünglichen ändern.


EDIT 2:

Dies sollte es sein.

>>> myList = [[10, 5, 6, 7, 8], [9, 5, 6, 7, 8], [8, 5, 6, 7, 8]] 
>>> myList2 = [] 
>>> for x in range(0, len(myList)): 
     subList = [] 
     for y in range(0, len(myList[x])-1): 
      subList.append(myList[x][0] - myList[x][y+1]) 
     myList2.append(subList) 


>>> myList2 
[[5, 4, 3, 2], [4, 3, 2, 1], [3, 2, 1, 0]] 
>>> 

myList2 ist eine Liste von Listen mit den subtrahierten Werten des ersten Elements jeder Liste in myList. Wenn dies nicht der Fall ist, sollten Sie in der Lage sein, es einfach so zu modifizieren, dass es macht, was Sie wollen.


EDIT3:

Ok, also das ist, was Sie dann wollen. Ich bin mir sicher, dass ein wirklich guter Programmierer das mit Generatoren oder etwas eleganter machen könnte. Ich habe mich noch nicht damit beschäftigt, da ich ein Anfänger bin, aber es funktioniert.

myList = [[10, 5, 6, 7, 8], [9, 5, 6, 7, 8], [8, 5, 6, 7, 8]] 
myList2 = [] 


for x in range(len(myList)): 
     subList1 = [] 
     for y in range(len(myList[x])): 
      subList2 = [] 
      for z in range(len(myList[x])): 
       subList2.append(myList[x][y] - myList[x][z]) 
      subList1.append(subList2) 
     myList2.append(subList1) 

# - First loop goes through all lists in myList 
# - Create an empty subList to append lists of subLists to 
# - Second loop goes through all positions in list x of mylist 
# - Create another empty subList2 to append the actual values to 
# - Third loop does the same as loop 2. 
# - Each value in myList from the second loop (y) gets - each value from myList 
#  (including itself) from the third loop (z) and appended to a subList2 
# - The subList2 is appended to subList1 creating a subList of subLists 
# - Finally the list of subLists is appended to myList2 for each turn of the 
#  first loop 

Dies wird die resultierende Liste von Listen von Listen geben:

myList2 
[[[0, 5, 4, 3, 2], [-5, 0, -1, -2, -3], [-4, 1, 0, -1, -2], [-3, 2, 1, 0, -1], [-2, 3, 2, 1, 0]], 
[[0, 4, 3, 2, 1], [-4, 0, -1, -2, -3], [-3, 1, 0, -1, -2], [-2, 2, 1, 0, -1], [-1, 3, 2, 1, 0]], 
[[0, 3, 2, 1, 0], [-3, 0, -1, -2, -3], [-2, 1, 0, -1, -2], [-1, 2, 1, 0, -1], [0, 3, 2, 1, 0]]] 

myList2 [0] [0] enthält alle Werte von myList [0] [0] im Vergleich zu myList [0] [x]

myList [0] [1] enthält alle Werte von myList [0] [1] im Vergleich zu myList [0] [x]

und so weiter ...

Wenn Sie deutlicher von dem ausgegangen wären, was Sie von Anfang an erreichen wollten, dann hätte ich sicher, dass einer der guten Programmierer Sie auch beantwortet hätte. Ich mache das, weil ich die Übung brauche.

+0

Ich möchte die Subtraktion zwischen allen Werten in jeder Liste anhängen ... N = 2 (die Anzahl der Listen a hat) ............... .................................................. ...................................... für i in Reichweite (N) : c.append ([]) für j im Bereich (R): c [i] .append ([]) für k im Bereich (R): c [i] [j] .append (b [j] - b [k]) print b ........... R = 40, Anzahl der Werte in jeder Liste –

+0

Ok, also, wenn du 3 l hast ISTS zum Beispiel: a = [5, 5, 5, 5] = b [4, 3, 2, 1] = c [0, 1, 2, 3] wollen Sie eine vierte Liste, die ist: d = [(5-4-0), (5-3-1), (5-2-2), (5-1-3)] dh d = [1, 1, 1, 1] Ist das korrekt? –

+0

@ Kapten Kober wenn meine Liste ist b = [741.0, 743.0, 3386.0, 917458.0, 917905.0, 917906.0, 922187.0, 925852.0.1692647.0, 1713958.0, 1801008.0, 1818975.0, 1858888.0, 1880544.0, 1880898.0, 1880899.0, 1880900.0, 1881062.0, 1881073.0, 1881240,0, 1881433,0, 1881434,0, 1881435,0, 1881436,0, 1881438,0, 1958358,0, 1958478,0, 1958479,0, 1958481,0, 1967310,0], [0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], ich möchte eine ac [i] -Liste erstellen, so dass sie es haben wird c [0] = Unterschied zwischen allen Werten zwischen ihnen, z. 741.0 - 743.0, 741.0 - 3386.0 und so weiter für b [1] too –

1

Es ergibt keinen Sinn.

Sie haben eine Liste von Listen (in Ihrem Fall a). Dann fragen Sie, wie Sie eine for-Schleife verwenden, um 2 separate Listen zu erstellen, b[0] und b[1], die bereits durch direkten Zugriff auf a[0] und a[1] erreicht werden können.

+0

Ich muß es tun, weil ich die eindimensionalen Listen benötigen, um Erstellen Sie Listen von Unterschieden zwischen jedem Wert in der Liste mit jedem anderen Wert in einer Liste ... ich kann nicht anders ... –

+0

@ThanosSmar Ich sehe immer noch nicht, warum es wichtig ist, wenn die Variable 'a [0] heißt 'oder' b [0] '. – DeepSpace

+0

ich verstehe, was du sagst..lets nehme an, dass ich eine Liste von Listen habe ... wie kann ich eine Liste von Listen mit den Unterschieden zwischen den Werten aus jeder Liste von a ?? –