簡體   English   中英

如何遍歷元組列表並比較元素?

[英]how to iterate through a list of tuples and compare elements?

我有一個元組列表,例如

list_tuples = [(2,3), (4,7), (3,2), (7,8), (7,4)]

我想在這個列表中找到元素相同但順序相反的元組。 在這種情況下,我的輸出將是:

new_list_tuples = [(2,3), (3,2), (4,7), (7,4)]

我已經嘗試了下面的代碼,但顯然它不起作用,因為它沒有意義:

for i in lista:
    if i[0] == i[1] and i[1] == i[0]:
        print(i)

誰能幫我這個? 提前謝謝了!

您可以使用列表理解:

>>> [t for t in list_tuples if (t[1], t[0]) in list_tuples]
[(2, 3), (4, 7), (3, 2), (7, 4)]

話雖如此,使用set進行查找更快

>>> set_tuples = set(list_tuples)
>>> [t for t in list_tuples if (t[1], t[0]) in set_tuples]
[(2, 3), (4, 7), (3, 2), (7, 4)]

我能想到的是你可以使用嵌套的 for 循環

new_list_tuple=[(2,3), (3,2), (4,7), (7,4)]
convert_list=[]
for i in range(len(new_list_tuple)):
    for j in range(i,len(new_list_tuple)):
        if new_list_tuple[i]==new_list_tuple[j][::-1]:
            convert_list.extend([new_list_tuple[i],new_list_tuple[j]])
print(convert_list)

主要思想是將元組分為前數和后數兩部分。

如果 front_numbers[X] == Back_number[Y] 和 front_number[Y] == Back_number[X]。 這意味着 list_tuples[X] 和 list_tuples[Y] 具有相同的元素但順序相反。

list_tuples = [(2,3), (4,7), (3,2), (7,8), (7,4)]

front_number = []
back_number = []

for i in range(len(list_tuples)):
    front_number.append(list_tuples[i][0])
    back_number.append(list_tuples[i][1])

new_list_tuple = []

for i, v in enumerate(front_number):
    for b_i, b_v in enumerate(back_number):
        if b_i == i:
            pass
        elif v == b_v:
            if front_number[b_i] == back_number[i]:
                if (front_number[i], back_number[i]) not in new_list_tuple:
                    new_list_tuple.append((front_number[i],back_number[i]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM