n个球放到m个盒子中的编程问题

现在我有10个列表,其中有8个列表最多存放两个物品,而另外2个列表最多只能存在一个物品,现在我想要的是把三个物品放到这10个列表中的所有种可能,这种编程一般怎么编?

8个列表可以放2个,2个列表可以放一个,共有18个可放,取起其3个。

8个列表可以放2个,2个列表可以放一个,共有18个位置可放,取其3个计算公式 181716/(321);如果三个物品没有区分就是上述结果,如果三个物品有区分就是()181716/(321))32*1
数学中集合和排序的知识点

数学问题算法为上,python的for循环真的是鸡肋。