Python–从列表中提取相似对
原文:https://www . geesforgeks . org/python-extract-like-pairs-from-list/
有时,在使用 Python 列表时,我们可能会遇到一个问题,需要提取列表中的所有元素对。这种问题可以应用于诸如 web 开发和日常编程等领域。让我们讨论执行这项任务的某些方法。
输入 : test_list = [1,2,3,4] 输出 : []
输入 : test_list = [2,2,2,2,3,3,4] 输出 : [(2,2),(2,2),(3,3)]
方法一:使用Counter()
+列表理解
以上功能的组合可以解决这个问题。在这种情况下,使用 Counter()提取频率,并使用列表理解完成对构造。
# Python3 code to demonstrate working of
# Extract Similar pairs from List
# Using Counter() + list comprehension
from collections import Counter
# initializing list
test_list = [4, 6, 7, 4, 2, 6, 2, 8]
# printing original list
print("The original list is : " + str(test_list))
# Extract Similar pairs from List
# Using Counter() + list comprehension
res = [(key, key) for key, val in Counter(test_list).items()
for _ in range(val // 2)]
# printing result
print("The records after pairing : " + str(res))
Output :
The original list is : [4, 6, 7, 4, 2, 6, 2, 8]
The records after pairing : [(4, 4), (6, 6), (2, 2)]
方法 2:使用fromkeys()
+列表理解
这是执行这个任务的又一种方式。在本例中,我们使用字典的 fromkeys()和 get()执行 Counter()任务,即获取频率。
# Python3 code to demonstrate working of
# Extract Similar pairs from List
# Using fromkeys() + list comprehension
# initializing list
test_list = [4, 6, 7, 4, 2, 6, 2, 8]
# printing original list
print("The original list is : " + str(test_list))
# Extract Similar pairs from List
# Using fromkeys() + list comprehension
temp = dict.fromkeys(test_list, 0)
for key in test_list:
temp[key] += 1
res = [(key, key) for key, val in temp.items() for _ in range(val // 2)]
# printing result
print("The records after pairing : " + str(res))
Output :
The original list is : [4, 6, 7, 4, 2, 6, 2, 8]
The records after pairing : [(4, 4), (6, 6), (2, 2)]
版权属于:月萌API www.moonapi.com,转载请注明出处