python - 从列表中创建一个包含“n”个交替元素的新列表
问题描述
我有一个未知的 x 值。假设我有以下数组:
array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
说 x = 2,我想要排列 2 个数组,使其变为:
array2 = [ [0, 2, 4, 6, 8, 10] , [1, 3, 5, 7, 9, 11] ]
如果 x = 3,那么我想要 3 个排列成这样的数组:
array3 = [ [0, 3, 6, 9], [1, 4, 7, 10], [2, 5, 8, 11] ]
谁能帮我解决这个问题?
解决方案
这是一个不需要 itertools 的简单解决方案:
def split_array (arr, parts):
result = []
for i in range(parts):
result.append([])
for j in range(0,len(arr),parts):
if i+j < len(arr):
result[i].append(arr[i+j])
return result
array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
print(split_array(array,2))
#[[0, 2, 4, 6, 8, 10], [1, 3, 5, 7, 9, 11]]
print(split_array(array,3))
#[[0, 3, 6, 9], [1, 4, 7, 10], [2, 5, 8, 11]]
推荐阅读
- javascript - 显示在 SendBird 频道聊天中发送的图像的缩略图
- tensorflow - 为文本分类添加额外维度
- c++builder - 如何在 ThorzScrollBox 中滚动 TListview?
- c# - 将 MultiPartFileData 文件发布到函数
- c - 在c中使用scanf语句读取一组字母
- python - 无法在python中更新绘图图表
- symfony - axios上传图片时发送多个参数
- ruby-on-rails - Counter_cache 具有多态性和常规的 belongs_to 关联
- api - 如何在 Twitter 的特定页面上获取用户的活动?
- vb.net - vb.net 和 ms 访问上的数据类型不匹配