2017-03-13 5 views
-3

Ich bin auf einem Spielbrett arbeiten, die in Eingaben nimmt und schafft ein Brett von ihnen aus und das Brett ich es eine 2D-ListeErstellen einer 2D-Liste aus Eingänge

Wenn der Benutzer Eingaben machen bearbeiten möchten:

. . . .

. B w.

. W B.

. . . .

Meine Funktion

def starting_board (Zeilen: int) -> Liste. Board = [] for i in range (Zeilen): board.append (Eingang() ersetzen (‘ '' ')) return Board

Returns dies: ['.. .... '' .bw '' .WB '' .... ']

Aber ich möchte es return: [['.', '.', '.', '.'], ['.', 'B', 'W', '.'] usw.)

+0

Hey! Dies ist eine Frage, für die es viele mögliche Antworten gibt ... Können Sie zeigen, was Sie bisher versucht haben? – rmeertens

+0

http://stackoverflow.com/questions/434287/what-is-the-most-pythonic-way-to-iterate-over-a-list-in-chunks – ewcz

+0

Naiv und einfach? 'arr2 = [[arr [2 * idx], arr [2 * idx + 1]] für idx im Bereich (len (arr)/2)]' – BrechtDeMan

Antwort

0

Dies funktioniert:

>>> def to_matrix(l, n): 
     return [l[i:i+n] for i in xrange(0, len(l), n)] 

>>> l = [0,1,2,3] 
>>> to_matrix(l,2) 
>>> [[0, 1], [2, 3]] 

Hoffe, dass es

0

Funktionelles aproach hilft:

l = [1,2,3,4,5,6,7,8] 
map(list, zip(l[::2], l[1::2])) 
[[1, 2], [3, 4], [5, 6], [7, 8]] 

Auch mit iter:

it = iter(l) 
zip(it, it) 
[(1, 2), (3, 4), (5, 6), (7, 8)] 
+0

Beachten Sie, dass in Python 3 sowohl "map" als auch "zip" Iteratoren und keine Listen zurückgeben. –

Verwandte Themen