我有x哪些是需要的元素数量,y哪些是需要元素的次数。例如:>>> x = 5>>> y = 2>>> for i in range(y):... for j in range(x):... print j,... 0 1 2 3 4 0 1 2 3 4预期输出为:0 1 2 3 45 6 7 8 9有人可以帮助我实现预期的输出吗? for任何方式的循环或列表理解都可以。提前致谢。
3 回答

暮色呼如
TA贡献1853条经验 获得超9个赞
选项1
如果需要将结果存储在列表中,可以使用解包和算术:
>>> [[*range(i*x, i*x+x)] for i in range(y)]
[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]
选项 2
如果您只是对打印值感兴趣,则无需通过创建中间子列表来浪费空间,您可以改为使用range对象:
for row in [range(i*x, i*x+x) for i in range(y)]:
print(*row)
0 1 2 3 4
5 6 7 8 9

30秒到达战场
TA贡献1828条经验 获得超6个赞
这个“带偏移量的范围”的想法最终成为一种严肃的方法:
for i in range(y):
print(*range(i*x, (i+1)*x))
0 1 2 3 4
5 6 7 8 9

MMTTMM
TA贡献1869条经验 获得超4个赞
你可以使用 numpy。由于您只是在范围内计数[0, x*y[并且只想将其绘制为某种形状,因此 numpy 可以在一个班轮中完全做到这一点:
import numpy as np
x = 5
y = 2
np.arange(x*y).reshape(y, x)
结果:
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
添加回答
举报
0/150
提交
取消