这是代码:
for(int i=1; i<=10; ++i)
for(int j=1; j<=10; ++j)
cin >> G[i][j];
这是一个二维数组G,我想存储来自G [1] [1]的数据,而不是来自零。
如何在python中实现此代码?
答案 0 :(得分:3)
for i in xrange(1, 11):
for j in xrange(1, 11):
G[i][j] = raw_input()
或更加pythonic的方式,假设G在你的循环之前是空的:
G = [[raw_input() for j in xrange(1, 11)] for i in xrange(1, 11)]
击> <击> 撞击>
(不起作用,这些列表将在元素0处具有第一个值,而不是OP想要的值)
答案 1 :(得分:2)
初始化G
:
G = [[0 for i in xrange(11)] for i in xrange(11)]
或 G = [[0]*11]*11
填充G
:
for i in xrange(10):
for j in xrange(10):
G[i+1][j+1] = int(raw_input())
如果你想在原地构建G
,你可以使用类似于初始化的嵌套列表理解来做到这一点
答案 2 :(得分:2)
>>> import random
>>> G = [[0]*11 for _ in range(11)]
>>> G
[[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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
>>> for i in range(1, 11):
for j in range(1, 11):
G[i][j] = random.randint(1,10)
>>> G
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 7, 8, 10, 5, 7, 9, 8, 10, 8, 3], [0, 7, 9, 7, 7, 6, 6, 10, 2, 8, 9], [0, 10, 6, 3, 7, 10, 7, 9, 6, 1, 7], [0, 5, 7, 1, 10, 3, 3, 1, 2, 5, 6], [0, 7, 3, 5, 4, 4, 2, 10, 10, 8, 1], [0, 10, 3, 3, 5, 4, 4, 2, 5, 3, 1], [0, 6, 6, 6, 6, 2, 3, 8, 1, 6, 4], [0, 7, 8, 5, 8, 1, 9, 5, 5, 2, 9], [0, 3, 2, 4, 1, 1, 4, 7, 7, 5, 5], [0, 3, 4, 10, 1, 2, 5, 3, 10, 9, 7]]
使用 random.randint
代替input()
或raw_input()
来证明这是有效的。
答案 3 :(得分:1)
使用词典:
G = {}
for i in xrange(1, 11):
G[i] = {}
for j in xrange(1, 11):
G[i][j] = raw_input()
使用列表(但从0开始索引):
G = []
for _ in xrange(1, 11):
row = []
G.append(row)
for _ in xrange(1, 11):
row.append(raw_input())
答案 4 :(得分:1)
如果可读性很重要,这也是非常易读的
G=[[0]*11 for _ in range(11)]
for (i,j) in itertools.product(range(1,11),range(1,11)):
while True:
try:
G[i][j]=int(raw_input())
break
except ValueError:
None