[英]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.