Проверьте массив, чтобы узнать, совпадают ли они - PullRequest
0 голосов
/ 28 мая 2020

Я новичок в программировании на Python. Я широко использовал Matlab. Я хочу проверить, совпадают ли любые два массива в 2D-массиве. У меня есть точки, скажем, координаты (x, y, z) в формате

data=[[x1,y1,z1],[x2,y2,z2]...[xn,yn,zn]].

Я хочу проверить, равна ли какая-либо точка другой точке. И если есть какие-то похожие экземпляры, я хочу знать, сколько из них одинаковы, а какие два одинаковые. Код, который у меня есть в Python, выглядит примерно так:

data = [[1,2,3],[3,1,8],[4,2,5],[1,2,3]]
s=0
for i in range(len(data)):
  a=data[i]
  for j in range(len(data)):
    while i != j:
        if data[j]==a:
            s=s+1
            c=i
            d=j

print(s)
print(c,d)

, и мне также не нужен ответ, что точка N равна точке N и т. Д. Я также использовал

for j in range(i,len(R)):

, но он также не дает правильного ответа.

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Это хорошо работает:

data =[[1,2,3],[4,5,6],[2,5,6],[0,9,1],[1,5,7],[2,5,4]]
st=[]
dic={}
while len(data)>1:
    d = data[0]
    data.remove(d)
    st=[]
    for dat in data:
        k=0
        for i in d:
            if i in dat:
                k=k+1
        if k>1:
            st.append(dat)
    if len(st)>0:
        dic[str(d)]=st
for key in dic.keys():
    print(key," : ", dic[key])
0 голосов
/ 28 мая 2020

Судя по всему, нашел проработку сам

d=[[1,2,3],[3,5,4],[5,6,9],[0,2,1],[1,2,3]]
s=0
for i in range(len(d)):
   for j in range(i+1,len(d)):
       if d[i]==d[j]:
           s=s+1
           x=i
           y=j
print(s)
print(x,y)
...