【发布时间】:2015-07-10 03:22:26
【问题描述】:
我正在尝试将列表拆分为枚举集,并且我有一个实现似乎可以做我想做的事,但感觉不是很“pythonic”有没有更好的方法?
以下示例将项目拆分为最大大小为 3 的集合,并从项目中返回每个项目以及集合编号和集合索引
items = [1,2,3,4,5,6,7,8,9]
def SplitSets(iterable,set_size):
row = 0
col = 0
for elem in iterable:
yield row, col, elem
if col == set_size - 1:
row = row+1
col = (col + 1) % set_size
for a,b,c in SplitSets(items,3):
print a,b,c
预期输出是
1,2,3
4,5,6
7,8,9
【问题讨论】:
-
你能告诉我们你想要什么输出吗?你的问题目前还不清楚。
-
你没有产生
set对象,这是大多数 Python 开发人员希望你在使用该术语时所指的内容。您是否正在尝试将您的列表分组? -
Martijn,代表我对术语的正确使用不当。我正在尝试对最大大小为指定数字的组中的项目列表进行排序。用例是我想要一个按钮列表,这些按钮将被排序为 x 行,每行有最大数量
-
听起来您只需要
itertools文档中的grouper配方。在这种情况下......只需复制该配方,或安装more_itertools并从那里导入它。如果这就是你想要的,那么它几乎肯定是一个重复,除非你认为枚举外部和内部迭代是困难的部分。
标签: python set iterable enumerate