2 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
假設(shè)您想要旋轉(zhuǎn)list2以使“共享”元素位于與 中相同的位置list1。
首先,要獲得匹配的索引,您不必比較所有元素。相反,您可以使用字典來(lái)存儲(chǔ)哪個(gè)元素位于哪個(gè)位置,然后在一次傳遞中獲取匹配位置list2(如果列表始終只有 3 個(gè)元素,這并不重要,但對(duì)于較長(zhǎng)的列表,它會(huì)降低復(fù)雜性O(shè)(n2) 至 O(n))
list1 = [26, 45, 15]
list2 = [13, 15, 20]
pos2 = {x: i for i, x in enumerate(list2)}
p1, p2 = next((i, pos2[x]) for i, x in enumerate(list1) if x in pos2)
然后,當(dāng)索引大于列表的長(zhǎng)度時(shí),您可以使用列表理解來(lái)list2使用模數(shù)“環(huán)繞”來(lái)獲取“旋轉(zhuǎn)”元素。%
n = len(list2)
res = [list2[(i+p2-p1) % n] for i in range(n)]
print(res) # [20, 13, 15]

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
此代碼獲取 list1 中也存在于 list2 中的數(shù)字的值和索引。
list1 = [26, 45, 15]
list2 = [13, 15, 20]
index, number = next((idx,number) for idx, number in enumerate(list1) if number in list2)
然后它從 list2 中刪除該數(shù)字并將其再次插入到所需的索引處:
list2.remove(number)
list2.insert(index,number)
print(list2)
輸出將是
[13, 20, 15]
添加回答
舉報(bào)