numbers = [ [([random.randint(1, 25)]) for col in range(5) ] for row in range(5)]
我想像表格列和行一样打印出来: 这就是我想要的,但没有[]。
''' [
[[13], [8], [2], [5], [17]],
[[18], [9], [10], [16], [23]],
[[5], [16], [7], [6], [11]],
[[7], [7], [24], [10], [24]],
[[1], [4], [17], [22], [13]]
] '''
我想要
'''
13 8 2 5 17
18 9 10 16 23
5 16 7 6 11
7 7 10 24 10
1 4 17 22 13
'''
然后,如果randint返回10个不同的数字,如果上面的列表中存在任何这些,那么它应该如下所示:
'''
13 8 2 5 17
[18] 9 10 16 23
5 16 7 6 11
7 7 [10] 24 10
1 4 17 22 13
'''
答案 0 :(得分:5)
这是使用itertools
import itertools
numbers = [ [([random.randint(1, 25)]) for col in range(5) ] for row in range(5)]
for i in numbers:
print(*itertools.chain.from_iterable(i))
打印
11 7 20 16 8
2 16 22 18 10
17 3 17 3 5
24 13 16 12 7
25 9 6 5 19
如果您知道每行有五个元素可以
for i in numbers:
print('{:<2} {:<2} {:<2} {:<2} {:<2}'.format(*itertools.chain.from_iterable(i)))
打印
11 7 20 16 8
2 16 22 18 10
17 3 17 3 5
24 13 16 12 7
25 9 6 5 19
要打印任意长度的行,我们可以
for i in numbers:
print(('{:<3} '*len(i)).format(*itertools.chain.from_iterable(i)))
哪个有类似的输出
答案 1 :(得分:-1)
我想我误解了你的意思&#34;没有方括号&#34;。如果将其保留为单元素列表的2D列表,则它看起来像这样。显然你可以在&#34; join&#34;的开头更改分隔符。声明你想要的任何东西。
>>> numbers = [ [([random.randint(1, 25)]) for col in range(5) ] for row in range(5)]
>>> for row in numbers:
... print ", ".join([ elem[0] for elem in row ])
7, 14, 14, 6, 2
25, 22, 22, 16, 8
13, 11, 3, 2, 21
24, 17, 22, 16, 18
7, 6, 20, 4, 20
答案 2 :(得分:-1)
如果您拥有numpy
套餐,则可以更轻松地生成数字:
numbers = numpy.random.randint(1, 26, size=[5,5])
注意独占上限26,相当于在random.randint
中将包含上限设置为25。另请注意,这会生成一个5x5数组,而从字面上看,您的定义会创建一个5x5x1数组。如果您真正打算在numbers
的定义中使用最里面的括号,请传递size=[5,5,1]
而不是[5,5]
。
无论您是否使用numpy
,以下是打印5x5版本的方法:
print('\n'.join(' '.join('%3d' % number for number in row) for row in numbers))
这是一种打印5x5x1版本的方法:
print('\n'.join(' '.join('%3d' % seq[0] for seq in row) for row in numbers))
无论哪种方式,这是一个示例输出:
21 3 15 19 25
5 12 13 7 16
21 24 7 5 1
11 6 18 1 19
18 7 20 14 8