3

これが私がしたことです-

grid_len = input("Enter Grid Length: ") #Assuming grid_length to be 3
s = []
while True:
    s.append(input())
    if len(s) == int(grid_len)**2: #grid_length^2 will be 9
        print(s)
        break

たとえば、入力が最初のループで1、2番目のループで2、3番目のループで3、というように9までの場合。次のようなリストが作成されます。

['1','2','3','4','5','6','7','8','9']

しかし、私はそれを次のようなものにしたい:

[[1,2,3],[4,5,6],[7,8,9]]
4

9 に答える 9

5

リスト内包に基づくバージョン。

s = [[input("Enter number: ") for _ in range(grid_len)] for _ in range(grid_len)]
print s

注:2つのスラッシュ「//」は有効なPythonコメント識別子ではありません

于 2013-03-13T09:07:54.867 に答える
2

この質問から私が見つけたもの:リストを均等なサイズのチャンクに分割するにはどうすればよいですか?

>>> mylist = [1,2,3,4,5,6,7,8,9]
>>> def chunks(l, n):
...    return [l[i:i+n] for i in range(0, len(l), n)]
>>> chunks(mylist,3)
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

コードに統合:

def chunks(l, n):
    return [l[i:i+n] for i in range(0, len(l), n)]
grid_len = input("Enter Grid Length: ")
s = []
while True:
    s.append(int(input())) # Notice I put int() around input()
    if len(s) == int(grid_len)**2:
        s = chunks(s,grid_len)
        print(s)
        break

編集: チャンクの 2 番目のパラメーターを match に変更しましたgrid_len。これは、3 だけでなく機能するようになりました。

于 2013-03-13T09:09:22.247 に答える
1

これが私のコードです:

grid_len = input("Enter Grid Length: ")
s = []
for i in range(grid_len):         #looping to append rows
    s.append([])                  #append a new row
    for j in range(grid_len):     #looping to append cells
        s[-1].append(input())     #append a new cell to the last row, or you can also append to `i`th row
于 2013-03-13T12:57:05.700 に答える
1

私はあなたの問題を抱えています。非常に簡単な解決策は

grid_length = int(input())
s = []
for i in range(grid_length):
     b = list(map(int, input().split()))
     s.append(b)
print(s)
于 2018-12-15T12:07:09.913 に答える
0

ネストされたリスト内包表記の使用:

>>> grid_len = input("Enter Grid Length: ")
Enter Grid Length: 4
>>> incrementer = iter(xrange(1, grid_len ** 2 + 1))
>>> s = [[next(incrementer) for x in xrange(grid_len)] for y in xrange(grid_len)]
>>> print s
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
于 2013-03-13T09:08:50.237 に答える
0

grid_length要素ごとに新しいサブリストを作成する必要があります。

grid_len = int(input("Enter Grid Length: "))
s = []
for _ in range(grid_length):
    sub_list = []
    for _ in range(grid_length):
        sub_list.append(input())
    s.append(sub_list)
print(s)

for一般に、オブジェクトを順次反復する必要がある場合、またはループを繰り返す回数がわかっている場合は、毎回使用する必要があることに注意してください。while通常、イテレーションの回数やイテラブルのイテレーションに関して因数分解するのが難しい「奇妙な」条件を処理する方が適切です。

于 2013-03-13T08:59:25.760 に答える