2024-06-17 14:47:01 发布
网友
我有x,这是所需元素的数量,y,这是所需元素的数量。你知道吗
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 4 5 6 7 8 9
有人能帮我达到预期的产量吗? for循环或列表理解任何方式都可以。 提前谢谢。你知道吗
for
你可以用numpy。因为您只需在[0, x*y[范围内计数,并且只想将其绘制成特定的形状,所以numpy可以在一行中精确地完成这一操作:
[0, x*y[
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]])
您可以组合各种itertools迭代器来创建自己的生成器:
>>> from itertools import count, islice >>> def foo(x, y): ... elements = count() ... for _ in range(y): ... yield list(islice(elements, x)) ... >>> for es in foo(5, 2): ... print(*es) ... 0 1 2 3 4 5 6 7 8 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对象:
range
for row in [range(i*x, i*x+x) for i in range(y)]: print(*row)
你可以用numpy。因为您只需在
[0, x*y[
范围内计数,并且只想将其绘制成特定的形状,所以numpy可以在一行中精确地完成这一操作:结果:
您可以组合各种itertools迭代器来创建自己的生成器:
选项1
如果需要将结果存储在列表中,可以使用解包和算术:
选项2
如果您只是对打印值感兴趣,则不需要通过创建中间子列表来浪费空间,而是可以使用
range
对象:相关问题 更多 >
编程相关推荐