2013-07-06 14 views
1

如果我有兩個列出了每個具有可以是兩個可能的值中的一個和兩個列表是除了一個值中,相同的元件,其方法我應該用來查找該值的索引?我要在Python作爲背景信息碼本有效的方法來找到單個不同元素的兩個列表之間的折射率在Python

方法A:

1. represent both lists as a binary literals 
2. use XOR on the two binary literals to give a value "v" that is a power of 2 
3. finally, use math.log(v, 2) to get the index 

或方法B:

just iterate through both lists until a different element is found and 
get the index 

或使用Python另一種方式?

+0

所以,如果你有'[1,2 ,3]'和'[1,2,4]'在兩個列表中獲取3和4的索引? – TerryA

+0

它們是否已被列爲清單? – Jared

+0

@Haidro是的,這就是我正在談論的例子 –

回答

2

將列表轉換爲另一種表示形式將涉及對它們進行迭代 - 不妨反覆查找差異本身。

+2

這是假設您的列表實際上是Python列表。如果你所擁有的是列表的某些文本表示,那麼取決於你打算如何使用它們,因爲將它們表示爲內存中的數字可能是有意義的,在這種情況下,你應該簡單地實現兩種方法來找出差異,並且衡量哪一個更快。 –

0

我認爲第一種方法比較好。您可以進一步修改它。

xor兩個列表並將結果存儲在一個變量說k。在k中找到一個位。現在xor所有與該位的元素設置爲1。你會得到一個號碼。 xor這個數字與k得到其他。

找到列表中的兩個數字,以知道每個屬於哪個列表以及數字的索引。

1

我不知道「最好」的方式,但你可以使用Python來獲得兩個集合的差異,然後返回索引:

xs= [1, 2, 3, 4, 5] 
ys = [1, 2, 3, 4, 6] # i.e. xs(5) and ys(6) are different 


xs.index(list(set(xs) - set(ys))[0]) 
ys.index(list(set(ys) - set(xs))[0]) 
相關問題