作者sofaly (沙发椅)
看板Python
标题[问题] 排除输出重复数值的方法
时间Fri Nov 2 11:10:30 2012
各位好
程式 8个变数 范围由1~2
输出 8个变数全部相加 = 9的结果
x=3
for a in range(1,x):
for b in range(1,x):
for c in range(1,x):
for d in range(1,x):
for e in range(1,x):
for f in range(1,x):
for g in range(1,x):
for h in range(1,x):
for i in range(1,x):
if a+b+c+d+e+f+g+h == 9:
print "%d %d %d %d %d %d %d %d " %
(a,b,c,d,e,f,g,h)
但是输出结果有重复
1 1 1 1 1 1 1 2
1 1 1 1 1 1 1 2
---------------------
1 1 1 1 1 1 2 1
1 1 1 1 1 1 2 1
1 1 1 1 1 2 1 1
1 1 1 1 1 2 1 1
1 1 1 1 2 1 1 1
1 1 1 1 2 1 1 1
1 1 1 2 1 1 1 1
1 1 1 2 1 1 1 1
1 1 2 1 1 1 1 1
1 1 2 1 1 1 1 1
1 2 1 1 1 1 1 1
1 2 1 1 1 1 1 1
2 1 1 1 1 1 1 1
请问要如何排除?
希望也可以排除
1 1 1 1 1 1 1 2
2 1 1 1 1 1 1 1
这种组合
谢谢
2 1 1 1 1 1 1 1
--
推 kkessherry:总之南极发生啥事都人类干的啦就对了?? 02/26 19:34
推 NicoRobin26:企鹅:不然怪拎北喔? 02/26 19:34
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 120.113.126.177
1F:→ kdjf:*1, 2 和 2, *1 为什麽算是一样? 11/02 11:15
2F:→ sofaly:抱歉因为有特殊需求@@" 我想用程式辅助我其他课业上的问题 11/02 11:19
0--------
--------0 把第2个 转180度 就跟第一个相同 ^^"
※ 编辑: sofaly 来自: 120.113.126.177 (11/02 11:20)
3F:→ mikapauli:你的变数i是拿来做什麽的? 11/02 11:30
4F:→ sofaly:我要从9个变数 算到 三个变数 所以全都先打上去 11/02 11:40
5F:→ sofaly:这是 有八个变数 的程式.. 因为想说能用就好 呵呵 11/02 11:41
我找到堪用的方法@@"
x=4
list2 = [ ]
for a in range(1,x):
for b in range(1,x):
for c in range(1,x):
for d in range(1,x):
for e in range(1,x):
for f in range(1,x):
for g in range(1,x):
for h in range(1,x):
for i in range(1,x):
if a+b+c+d+e+f+g == 9:
list1=["%d %d %d %d %d %d %d " %
(a,b,c,d,e,f,g)]
for i in list1:
if not i in list2:
list2.append(i)
print list2
输出
['1 1 1 1 1 1 3 ', '1 1 1 1 1 2 2 ', '1 1 1 1 1 3 1 ', '1 1 1 1 2 1 2 ',
'1 1 1 1 2 2 1 ', '1 1 1 1 3 1 1 ', '1 1 1 2 1 1 2 ', '1 1 1 2 1 2 1 ',
'1 1 1 2 2 1 1 ', '1 1 1 3 1 1 1 ', '1 1 2 1 1 1 2 ', '1 1 2 1 1 2 1 ',
'1 1 2 1 2 1 1 ', '1 1 2 2 1 1 1 ', '1 1 3 1 1 1 1 ', '1 2 1 1 1 1 2 ',
'1 2 1 1 1 2 1 ', '1 2 1 1 2 1 1 ', '1 2 1 2 1 1 1 ', '1 2 2 1 1 1 1 ',
'1 3 1 1 1 1 1 ', '2 1 1 1 1 1 2 ', '2 1 1 1 1 2 1 ', '2 1 1 1 2 1 1 ',
'2 1 1 2 1 1 1 ', '2 1 2 1 1 1 1 ', '2 2 1 1 1 1 1 ', '3 1 1 1 1 1 1 ']
※ 编辑: sofaly 来自: 120.113.126.177 (11/02 12:44)
不知道有没有问题@@"
※ 编辑: sofaly 来自: 120.113.126.177 (11/02 12:44)
7F:→ uranusjr:世界奇观... 11/02 13:15
8F:→ sofaly:谢谢 11/02 13:19
抱歉可提示一下第2个问题吗
先把 '1 1 1 1 1 1 3'跟'1 1 1 1 3 1 1'
打散(?) 然後排序 再封装 再去比对重复?
※ 编辑: sofaly 来自: 120.113.126.177 (11/02 13:36)
9F:→ birdhackor:你到底要排除哪几种? '1 1 1 1 1 1 3'跟 11/02 14:01
10F:→ birdhackor:'1 1 1 1 3 1 1'也是要排除的吗? 11/02 14:01
11F:→ sofaly:是的 所有包含 六个1 加 一个3 都算重复 11/02 14:13
12F:→ birdhackor:那 '1 1 1 1 1 2 2' 与 '1 1 2 2 1 1 1' 呢? 11/02 14:15
13F:→ sofaly:相同@@" 11/02 14:19
14F:→ birdhackor:所以你要的就是八个正整数加总为九的"组合"的意思? 11/02 14:20
15F:→ sofaly:请等等 我上传图片 11/02 14:20
17F:→ sofaly:我在计算机构设计 所以 两个图转动或翻转一下 就相同 11/02 14:25
18F:→ sofaly:要排除.....谢谢各位 我找资料好像很复杂 我用人工的好了 11/02 14:26
19F:→ sofaly:= = 左边的箭头画错....请见谅 11/02 14:27
20F:→ birdhackor:只是翻转或旋转不要? 所以像是 '1 3 1 3' 与 '1 3 3 1' 11/02 14:42
21F:→ birdhackor:视为不同 但 '1 3 3 1'与 '1 1 3 3', '3 1 1 3' 11/02 14:42
22F:→ birdhackor:'3 3 1 1' 视为相同? 11/02 14:43
23F:→ sofaly:= = 您说得好像对... 我再研究看看 谢谢 11/02 14:47
24F:→ sofaly:抱歉是我想的太简单 打扰各位 11/02 14:48