我在将数组“配对”为一个(按索引)时遇到问题。这是一个例子:
输入:
inputArray = [[0, 1, 2, 3, 4], [2, 3, 5, 7, 8], [9, 6, 1]]
预期输出:
outputArray =
[[0,2,9],
[1,3,6],
[2,5,1],
[3,7,chooseRandom()],
[4,8,chooseRandom()]]
问题:
如何避免“out of range”“index error”问题- 如何编写chooseRandom()来选择N个邻居
答案:
- [已解决] @jonrsharpe & @Christian & @Decency 提供的解决方案作为 预计
澄清:
N 个邻居我的意思是:
我正在使用 python,但请随时用任何语言分享您的想法。
最佳答案
我认为以下会做你想做的事:
from itertools import izip_longest # 'zip_longest' in Python 3.x
from random import choice
# Step 1
outputArray = list(map(list, izip_longest(*inputArray)))
# Step 2
for index, arr in enumerate(outputArray):
if any(item is None for item in arr):
valid = [item for item in arr if item is not None]
outputArray[index] = [choice(valid) if item is None else item
for item in arr]
这有两个步骤:
- 将
inputArray
的所有子列表合并到最长子数组的长度,用None
填充:[[0, 2, 9], [1, 3, 6], [2, 5, 1], [3, 7, 无], [4, 8, 无]]
;和 - 遍历
outputArray
,找到包含None
的所有子列表,并将None
替换为从其他项目中随机选择的内容不是None
的子列表。
示例输出:
[[0, 2, 9], [1, 3, 6], [2, 5, 1], [3, 7, 3], [4, 8, 8]]
关于python - 如何成对合并多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23936715/