Python 排除可能的图像位置

Python 排除可能的图像位置,python,combinations,Python,Combinations,我需要放置图像,这样它们就不会相互重叠。我在看矩阵3x3,所以有9个位置。图像是水平的,它有两个位置。我试过这样做(编辑): 有时它会生成如下输出: 1 [0, 3, 4, 5, 6, 7, 8] [0, 3, 4, 5, 6, 7, 8] [0, 3, 4, 5, 6, 7, 8] [0, 3, 4, 5, 6, 7, 8] [3, 4, 5, 6, 7, 8] 4 [3, 6, 7, 8] 第一个图像被放置在位置1上,因此1和2被取出。第二个图像位于位置4,但顺便说一句,它带走了0。。。也

我需要放置图像,这样它们就不会相互重叠。我在看矩阵3x3,所以有9个位置。图像是水平的,它有两个位置。我试过这样做(编辑):

有时它会生成如下输出:

1
[0, 3, 4, 5, 6, 7, 8]
[0, 3, 4, 5, 6, 7, 8]
[0, 3, 4, 5, 6, 7, 8]
[0, 3, 4, 5, 6, 7, 8]
[3, 4, 5, 6, 7, 8]
4
[3, 6, 7, 8]

第一个图像被放置在位置1上,因此1和2被取出。第二个图像位于位置4,但顺便说一句,它带走了0。。。也许有更好的方法吗?

在except子句中,加入一个return语句:

return   find_horizontal_position(avaiable_pos)
否则,即使您试图放置图像的位置无效,您仍将执行return语句

return myList, position
在您的示例中,它具有
位置==0
。请注意,即使存在有效的解决方案,您的方法也可能找不到有效的解决方案,我建议对所有对进行循环

(img1leftposition, imp2leftposition), img1leftposition != imp2leftposition
当img1leftposition和img2leftposition处于
可能的位置时
(有很多方法可以做到这一点,使用

for pair in zip(possible_position, possible_position):
    ...

我的附加返回语句的解决方案仍然存在缺陷。现在它正确地分隔了两个图像,但偶尔会删除一个额外的点-我编辑了我的帖子。你能更好地解释你的建议吗,给出示例代码吗?我不知道数字或矩形图像,它可以是1、2或3.0,因为当位置==1时,第一个删除e是成功的,所以try语句只会在到达myList.remove(位置+1)之前失败。这是我创建myList的方式。它应该使用旧变量(其他位置)。勘误表:意思是“因为当位置==0”使用交集\u set=set(myList)&set(MyListShift)&set(可能的位置)并从交叉点集中随机选择一个位置。如果交叉点集非空,则您将始终获得一个有效位置。
for pair in zip(possible_position, possible_position):
    ...