Ind*_*bel 2 python multidimensional-array
我在这里疯了,我有一个截止日期.所以我在python中有这个多列表:
list_a = [[['a', 'b'],['c', 'd'], ['e', 'CB'], ['g', 'h'], ['a', 'j', 'k']]]
Run Code Online (Sandbox Code Playgroud)
请注意,整个事情在2个括号中.我需要比较这样的元素:a到c,a到d,b到c,b到d,a到e,a到CB ......直到第一个列表将所有项目与另一个项目中的所有项目进行比较列表,然后它移动到第二个列表并开始将其项目与其余列表进行比较,依此类推,直到结束.我不希望它将自己的项目与自己的列表进行比较.这是一些代码:
for i in range(0, len(list_a)):
for j in range(0, len(list_a)):
for o in range (0, len(list_a[i])):
for t in range(1, len(list_a[j])):
try:
for x in range(0, len(list_a[i][o])):
for y in range(0, len(list_a[j][t])):
print list_a[i][o][x], "i=",i, "o=",o, "x=",x
print list_a[j][t][y], "j=",j, "t=",t, "y=",y
except IndexError:
print ""
Run Code Online (Sandbox Code Playgroud)
这个失败因为它将自己的项目与自己的项目进行比较.当然有更好的方法来做到这一点,而不是把很多forloops放在彼此里面.
而且,当它遇到CB时,我需要它向我发出信号.如果它正确循环,这将很容易.哦,那个"尝试"可以删除我猜.我确信这很容易,但我现在无法理解.
您可以使用itertools从列表中获取所有对,然后查找它们的所有产品:
import itertools
for l1, l2 in itertools.combinations(list_a[0], 2):
for e1, e2 in itertools.product(l1, l2):
print e1, e2
Run Code Online (Sandbox Code Playgroud)
打印:
a c
a d
b c
b d
a e
a CB
b e
b CB
a g
a h
b g
b h
a a
a j
a k
b a
b j
b k
c e
c CB
d e
d CB
c g
c h
d g
d h
c a
c j
c k
d a
d j
d k
e g
e h
CB g
CB h
e a
e j
e k
CB a
CB j
CB k
g a
g j
g k
h a
h j
h k
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3112 次 |
| 最近记录: |