我有兩個列表。一個列表只包含隨機順序的元素(y
),而另一個有序列表具有列表子集(x
)。這些列表子集的第一個元素與隨機列表相同。從另一個列表中提取部分列表
我想要第二個列表中的所有元素出現在第一個列表中,但順序相同。這裏有一個例子:
輸入:
x = [[1,'a'],[2,'b'],[3,'c'],[4,'d'],[5,'d']]
y = [4,1,2]
所需的輸出:
[[4, 'd'], [1, 'a'], [2, 'b']] # Same sequence as y but elements in x
我已經寫了一些代碼來實現這一目標:
for i in range(0,len(y)):
for k in range(0,len(x)):
if y[i] ==x[k][0]:
d.append(x[k])
但是,我不知道如果這是解決這個問題的最有效方法。這僅僅是一個例子,實際上,我的列表x
包含超過一百萬個子列表,所以如果我嘗試使用此代碼,它將循環超過一百萬次x
。
如何讓此代碼更高效?
'y'有多大?只有一些像這個例子那樣的元素,或者像'x'一樣大? – ASCIIThenANSI
另外,是否重複了任何第一個元素(例如,'4'多次出現作爲第一個元素)?答案取決於他們是否。 – ASCIIThenANSI
y中的索引值是否在x中? –