[英]Most efficient way of producing constrained pairs of combinations out of a list in Python
[英]Most efficient computational way in python find pairs in a list of pairs
我需要查找對是否存在於對列表中。 我可以使用帶有 if 語句的標准 for 循環,但是有沒有一種計算效率更高的方法?
目前我的數據如下:
alist = [(12970, 12980), (12970, 13000), (12970, 13012)]
pair = [12970, 13000]
for a in list:
if a == pair:
print("do something")
我嘗試使用以下內容,但沒有返回匹配項:
if pair in alist:
print("do something")
還有其他建議嗎?
pair
是兩個整數的列表。
alist
具有元組元素。
由於它們甚至不是相同的基本類型,因此它們不會相等。
嘗試
alist = [(12970, 12980), (12970, 13000), (12970, 13012)]
pair = (12970, 13000) # tuple, not list
if pair in list:
...
如果您的問題要求不允許您更改原始值,則將類型轉換為內聯:
if tuple(pair) in list:
如果alist
已排序,則可以使用復雜度 O(log n) 的bisect
。
從模塊文檔復制:
import bisect
def index(a, x):
'Locate the leftmost value exactly equal to x'
i = bisect.bisect_left(a, x)
if i != len(a) and a[i] == x:
return i
raise ValueError
index(alist, (12970, 13000))
如果沒有找到元素,你會得到ValueError
您還可以 go 將alist
轉換為設置。 那么查找時的平均復雜度應該是 O(1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.