亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

簡化二維列表比較的輸出

簡化二維列表比較的輸出

aluckdog 2023-06-27 18:34:34
我已經從文件tuples中復制了大約 2000 多行內容?,F在我需要將其中的每個元素與其余部分中的后續元素進行比較,并且我只需要比較每個元素一次,即如果我采用第一個元素并與列表中的每個元素進行比較,那么我可以在其余部分中丟棄它比較。listtxtlistlist這是我的比較塊代碼:R = [(20, 12, 40, 42, 45), (40, 21, 40, 42, 49),    (6, 19, 22, 36, 48), (2, 5, 20, 24, 33),    (8, 12, 24, 28, 44), (3, 15, 29, 30, 37),    (20, 17, 30, 33, 43), (3, 15, 16, 29, 42),    (17, 18, 20, 35, 39), (20, 21, 23, 43, 48),    (14, 24, 30, 40, 45)...]for lineno1, tup in enumerate(R):    print("")    # iterate over the current tuple    for i, num in enumerate(tup):        # compare every number in the tuple to the rest of the list        for lineno2 in range(lineno1+1, len(R)):            tup2 = R[lineno2]            if num == tup2[i]:                print(f"In line: {lineno1+1} {tup} No. '{num} is found in line {lineno2+1} {tup2}.")                break我的輸出:line: 1 (20, 12, 40, 42, 45) No. 20 is found in line '7' (20, 17, 30, 33, 43).    line: 1 (20, 12, 40, 42, 45) No. 12 is found in line '5' (8, 12, 24, 28, 44).    line: 1 (20, 12, 40, 42, 45) No. 40 is found in line '2' (40, 21, 40, 42, 49).    line: 1 (20, 12, 40, 42, 45) No. 42 is found in line '2' (40, 21, 40, 42, 49).    line: 1 (20, 12, 40, 42, 45) No. 45 is found in line '11' (14, 24, 30, 40, 45).        line: 2 (40, 21, 40, 42, 49) No. 21 is found in line '10' (20, 21, 23, 43, 48).        line: 3 (6, 19, 22, 36, 48) No. 48 is found in line '10' (20, 21, 23, 43, 48).        line: 4 (2, 5, 20, 24, 33) No. 20 is found in line '9' (17, 18, 20, 35, 39).            line: 6 (3, 15, 29, 30, 37) No. 3 is found in line '8' (3, 15, 16, 29, 42).    line: 6 (3, 15, 29, 30, 37) No. 15 is found in line '8' (3, 15, 16, 29, 42).        line: 7 (20, 17, 30, 33, 43) No. 20 is found in line '10' (20, 21, 23, 43, 48).    line: 7 (20, 17, 30, 33, 43) No. 30 is found in line '11' (14, 24, 30, 40, 45).我需要幫助格式化輸出,在我的輸出中,我得到了五行輸出,tuple我需要簡化它并獲得干凈的輸出。我想tuple在一行中獲得每個的輸出,因為我有超過 1500 個tuples,大約需要 7500 行。
查看完整描述

4 回答

?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

只是很多循環:) 請注意,某些行與另一行有多個匹配。我把它們留在里面了。


R = [(20, 12, 40, 42, 45), 

     (40, 21, 40, 42, 49),

     (6, 19, 22, 36, 48), 

     (2, 5, 20, 24, 33),

     (8, 12, 24, 28, 44), 

     (3, 15, 29, 30, 37),

     (20, 17, 30, 33, 43), 

     (3, 15, 16, 29, 42),

     (17, 18, 20, 35, 39), 

     (20, 21, 23, 43, 48),

     (14, 24, 30, 40, 45)]

     

     

for i,x in enumerate(R):

   for ie, e in enumerate(x):

       for rw in range(i+1, len(R)):

          if e == R[rw][ie]:

             print(f"In line: {i+1} {x} No. '{e}' is found in line {rw+1} {R[rw]}")

             break

輸出


In line: 0 (20, 12, 40, 42, 45) No. '20' is found in line 6 (20, 17, 30, 33, 43)

In line: 0 (20, 12, 40, 42, 45) No. '12' is found in line 4 (8, 12, 24, 28, 44)

In line: 0 (20, 12, 40, 42, 45) No. '40' is found in line 1 (40, 21, 40, 42, 49)

In line: 0 (20, 12, 40, 42, 45) No. '42' is found in line 1 (40, 21, 40, 42, 49)

In line: 0 (20, 12, 40, 42, 45) No. '45' is found in line 10 (14, 24, 30, 40, 45)

In line: 1 (40, 21, 40, 42, 49) No. '21' is found in line 9 (20, 21, 23, 43, 48)

In line: 2 (6, 19, 22, 36, 48)  No. '48' is found in line 9 (20, 21, 23, 43, 48)

In line: 3 (2, 5, 20, 24, 33)   No. '20' is found in line 8 (17, 18, 20, 35, 39)

In line: 5 (3, 15, 29, 30, 37)  No. '3'  is found in line 7 (3, 15, 16, 29, 42)

In line: 5 (3, 15, 29, 30, 37)  No. '15' is found in line 7 (3, 15, 16, 29, 42)

In line: 6 (20, 17, 30, 33, 43) No. '20' is found in line 9 (20, 21, 23, 43, 48)

In line: 6 (20, 17, 30, 33, 43) No. '30' is found in line 10 (14, 24, 30, 40, 45)


查看完整回答
反對 回復 2023-06-27
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

我不確定我的問題是否正確,特別是因為我認為你已經快要問了。


R = [(20, 12, 40, 42, 45), (40, 21, 40, 42, 49),

    (6, 19, 22, 36, 48), (2, 5, 20, 24, 33),

    (8, 12, 24, 28, 44), (3, 15, 29, 30, 37),

    (20, 17, 30, 33, 43), (3, 15, 16, 29, 42),

    (17, 18, 20, 35, 39), (20, 21, 23, 43, 48),

    (14, 24, 30, 40, 45),]

for i,x in enumerate(R):

    a = set(x)

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

        y = R[j]

        b = set(y)

        ab = a&b

        for n in ab:

            print(f"In line: {i+1} {x} No. '{n}' is found in line {j+1} {y}.")


查看完整回答
反對 回復 2023-06-27
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

三個嵌套循環似乎效率不高,但對我來說這是最明顯的解決方案。

對于列表中的每個元組,迭代元組中的每個數字,并將其與列表其余部分中每個元組中相同位置的數字進行比較,直到找到匹配項。


for lineno1, tup in enumerate(R):

    # iterate over the current tuple

    for i, num in enumerate(tup):

        # compare every number in the tuple to the rest of the list

        for lineno2 in range(lineno1+1, len(R)):

            tup2 = R[lineno2]

            if num == tup2[i]:

                print(f"In line: {lineno1+1} {tup} No. '{num} is found in line {lineno2+1} {tup2}.")

                break


查看完整回答
反對 回復 2023-06-27
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

如果我正確理解了這個問題,你只需要迭代一堆......


R = [(20, 12, 40, 42, 45), (40, 21, 40, 42, 49),

    (6, 19, 22, 36, 48), (2, 5, 20, 24, 33),

    (8, 12, 24, 28, 44), (3, 15, 29, 30, 37),

    (20, 17, 30, 33, 43), (3, 15, 16, 29, 42),

    (17, 18, 20, 35, 39), (20, 21, 23, 43, 48),

    (14, 24, 30, 40, 45)...]


for i in range(len(R)):

    list_a = R[i]

    for d in range(len(list_a)):

       val_to_find = list_a[d]

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

           list_b = R[j]

           for k in range(list_b):

               cur_val = list_b[k]

               if(val_to_find == cur_val):

                  print("In line: " + string(i) + " " + string(list_a) + " No. " + string(list_a[d]) + " is found in line " + string(k) + " " + string(list_b)")



查看完整回答
反對 回復 2023-06-27
  • 4 回答
  • 0 關注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號