我正在尝试弄清楚如何将列表中的元素附加到我将它们放入嵌套列表的模式中。
例如:
members = [1, 2, 3, 4, 5, 6, 7, 8, 9]
no_of_teams = int(input('no. of teams? '))
teams = [ [ ] for _ in range(no_of_teams)]
这样我的输出最终会像这样:
没有团队? 2
teams = [ [1, 3, 5, 7, 9], [2, 4, 6, 8]]
如果用户输入 3 那么它将看起来像这样:
teams = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
对于 7,它看起来像
teams = [ [1, 8], [2, 9], [3], [4], [5], [6], [7] ]
最佳答案
一个好方法是使用切片:
number = int(input(...))
members = list(range(1, 10))
chunks = len(members) // number
teams = [members[i*chunks:i*chunks+number]
for i in range(number)]
您也可以改用步长:
teams = [members[i::number]
for i in range(number)]
这将产生您想要的输出:
- 在每次迭代中,我们从列表中的下一项开始切片
- 切片上升
n
步
因此,如果 n
为 3,则第一次迭代将给出包含索引 0、3、6、9 的切片......因为步长为 3
第二次迭代给出索引 1、4、7 ...
第三次迭代给出索引 2、5、8 ...
迭代在第 3 次停止,因为 n
也规定了这一点。
关于python - 将列表整理成嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53308911/