Python 迭代中我的嵌套循环出错?
考虑Python 迭代中我的嵌套循环出错?,python,Python,考虑 a = [1,2,3,4] i = 0 j = 1 for i in range(len(a)): for j in range(len(a)): d = (a[i]-a[j]) j = j + 1 print i, j, d i = i + 1 输出 0 1 0 0 2 -1 0 3 -2 0 4 -3 1 1 1 1 2 0 1 3 -1 1 4 -2 2 1 2 2
a = [1,2,3,4]
i = 0
j = 1
for i in range(len(a)):
for j in range(len(a)):
d = (a[i]-a[j])
j = j + 1
print i, j, d
i = i + 1
输出
0 1 0
0 2 -1
0 3 -2
0 4 -3
1 1 1
1 2 0
1 3 -1
1 4 -2
2 1 2
2 2 1
2 3 0
2 4 -1
3 1 3
3 2 2
3 3 1
3 4 0
我试图遍历我的数组,这样我只能得到d的非零数字,并且我不会遍历相同的I和j(例如:如果I=0,j=1或I=1,j=0)。这就像做一个组合题,我要查找数组中的对数和对应的d。试试这个:
a = [1,2,3,4]
i = 0
j = 1
for i in range(len(a)):
for j in range(len(a)):
d = (a[i]-a[j])
j = j + 1
if i != j and d != 0:
print i, j, d
i = i + 1
输出:
>>>
0 2 -1
0 3 -2
0 4 -3
1 3 -1
1 4 -2
2 1 2
2 4 -1
3 1 3
3 2 2
只需使用
itertools
中的permutations
:
import itertools
a = [1,2,3,4]
for permutation in itertools.permutation(a, 2):
print permutation
输出
(1, 2)
(1, 3)
(1, 4)
(2, 1)
(2, 3)
...
...
如果你还想要你能做到的距离
a = [1,2,3,4]
for permutation in itertools.permutation(a, 2):
print permutation, permutation[1] - permutation[0]
(1, 2) 1
(1, 3) 2
(1, 4) 3
(2, 1) -1
我试图遍历我的数组,这样我只能得到数字
这对于d是非零的
除非这是一个家庭作业,我会建议你使用反向排序列表或你的问题
>>> list((a,b) for a,b in itertools.permutations(a, 2) if a > b)
[(2, 1), (3, 1), (3, 2), (4, 1), (4, 2), (4, 3)]
>>> list(itertools.combinations(sorted(a, reverse = True), 2))
[(4, 3), (4, 2), (4, 1), (3, 2), (3, 1), (2, 1)]
你有什么问题吗?还有,
i=0
和j=0
没有任何作用。对范围内的i(len(a))迭代,
开始时i
为0。对范围(len(a))中的j进行迭代,
开始j
为0。要从j=1
迭代到len(a)
,请对范围(1,len(a))内的j执行:。
。谢谢!实际上,使用itertools的组合正是我想要的。这让我想到了这一点。