【问题标题】:I need help splitting a list into equal parts我需要帮助将列表分成相等的部分
【发布时间】:2014-10-07 20:03:30
【问题描述】:

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

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

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

谢谢

编辑:解决最近的一些 cmets @ 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 解决我的问题没有成功。

edit: x 和 y 的值将由用户输入。

编辑:@joergwork 很接近,但我不想按 3 计数

【问题讨论】:

  • 在python中,导入模块是一种正常的做法。即使是标准库,也只有在导入时才能访问。有了这个限制,您可能会得到只会重新发明轮子的答案,而不是重用现有功能的更 Pythonic 的答案。
  • 那么您尝试了什么,有什么问题?你读过哪些“线程”;他们教了你什么,你还不懂什么?
  • 感谢您的回复,我已经在 OP 中解决了。
  • 你已经知道 x 和/或 y 的值了吗?
  • x 和 y 的值将由用户输入。

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


【解决方案1】:

您是否正在寻找类似以下的内容(来自 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,2,3] [3,4,5] [6,7,9]。我不想在每个元素之间跳过三个数字。
  • 所以我设法将该结构实现到我的代码中,但我仍然遇到问题。我会多看一点,然后回复。谢谢
  • @JohnKraz 如果数组不能被 x 整除,您可能需要执行 range(x+1) 之类的操作。
  • 再次感谢您的回复。我注意到两个问题。我将用我的代码回复,所以它更清楚
  • @JohnKraz,希望你能理解。最好支持这个答案和/或将其标记为答案。
【解决方案2】:
#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])

当我运行此代码时,我似乎在代码下方获得了 (x - y) 个“[]”。

【讨论】:

    猜你喜欢
    • 2021-03-19
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2011-03-04
    • 2021-01-16
    相关资源
    最近更新 更多