如何在Python中重复地增加x个元素的个数y次

2024-06-17 14:47:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有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循环或列表理解任何方式都可以。 提前谢谢。你知道吗


Tags: in元素列表for数量方式rangeprint
3条回答

你可以用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]])

您可以组合各种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对象:

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

相关问题 更多 >