【发布时间】:2017-08-19 13:45:44
【问题描述】:
我有一个板列表列表,boards。 boards 包含许多子列表,每个子列表中都有相同类型的板。本质上:[[...], [...], ...]。
假设第一个子列表是 1,第二个子列表是 2。我需要将 1 的每个元素与 2 的每个元素进行比较。所以,我需要 (1[0], 2[0]), (1[0], 2[1])...(1[0], 2[len(2)-1]);(1[0], 2[0])... 对。
问题是,我不知道boards 中有多少子列表,这意味着我不能只做 n 个for 循环。这就是我现在拥有的:
for sublist in boards:
for board in sublist:
for board_indices in itertools.permutations(range(len(sublist)), len(boards)):
matched_boards = [boards[a][j] for a, j in enumerate(i)]
但我想我想多了。我确信有一种更简单、更简单、更易读的方法来做到这一点,但我不确定它是什么。
【问题讨论】:
-
你的问题有点不清楚。是否要从
boards中的每一对子列表中生成每一对项目? -
另外,您发布的代码有点奇怪。您的
for board_indices循环对board_indices中生成的排列没有任何作用,并且您有一个未定义的变量i。 -
@PM2Ring 是的,没错。另外,对
i变量感到抱歉,我试图让我的代码更具可读性,却忘记用board_indices替换i。
标签: python python-3.x loops multidimensional-array itertools