我需要帮助将列表分成相等的部分

时间:2014-10-07 20:03:30

标签: arrays list sorting python-3.x grouping

我有一个列表(A)是(x * y)的乘积。我正在尝试创建包含x个元素的y列表。

我需要每x个元素打印一个新行,或者将列表分成包含x个元素的y列表。

我研究了许多类似的线程,但仍然不知道。

谢谢

编辑:解决一些最近的评论 @ b4hand,谢谢你让我知道。我删除了那个。 @ jonrsharpe,这是一个更大的任务的一部分。我需要用输入创建一个特定的形状。我已经设法做了其余的事情,我相信像我描述的那样分裂它会产生我想要的形状。我还没有尝试过任何东西,但我已经阅读了以下主题: - How do you split a list into evenly sized chunks? - http://www.pythoncentral.io/how-to-slice-listsarrays-and-tuples-in-python/ - Splitting a list of into N parts of approximately equal length

  • 通过链接,我认为我找到了一个需要研究的资源。我并不是真的想要获取代码,我只是在寻找一个教程或相关提示来开始。

编辑:我没有成功尝试使用pprint来解决我的问题。

ediit:用户输入x和y的值。

编辑:@joergwork即将结束,但我不想按3计算

2 个答案:

答案 0 :(得分:0)

您是否正在寻找以下内容(来自python控制台)?

>>> a = [1,2,3,4,5,6,7,8,9]
>>> x = 3
>>> [ a[1*i::x] for i in range(x) ]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
>>>
>>>
>>> for i in range(x):
...     a[1*i::x]
...
[1, 4, 7]
[2, 5, 8]
[3, 6, 9]

编辑:像这样?

>>> for i in range(x):
...     a[x*i:x*i+x]
...
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

编辑:做了一个你的工作实例:像那样?

x = int(input("Please enter a x: "))
y = int(input("Please enter a y: "))

product = x * y

numbers = []
for i in range(1, product + 1):
    numbers.append(i)

num_cols, num_rows = x, y

for row in range(num_rows):
    print('row {}: values: {}'.format(row, numbers[num_cols * row:num_cols * row + num_cols]))

答案 1 :(得分:0)

#ask for x

z = int(input("Please enter a x: "))

#ask for y
y = int(input("Please enter a y: "))

product = x * y


alist = []
for i in range(1,product+1):
    nums.append(i)

a = alist

x = z 

for i in range(x):
    print(a[x*i:x*i+x])

当我运行此代码时,我似乎得到(# - y)的数字" []"在代码下面。