什麼是基於例如查找某個特定元組的最有效方式?在一個列表,元組的第二個元素和元組移動到列表頂部 東西的形式爲:在元組列表中查找和移動元組
LL=[('a','a'),('a','b'),('a','c'),('a','d')]
LL.insert(0,LL.pop(LL.index(...)))
,我想在指數)的東西(這將讓我的元組的位置'c'作爲第二個元素。
有沒有一個經典的python單線方法來做到這一點?
什麼是基於例如查找某個特定元組的最有效方式?在一個列表,元組的第二個元素和元組移動到列表頂部 東西的形式爲:在元組列表中查找和移動元組
LL=[('a','a'),('a','b'),('a','c'),('a','d')]
LL.insert(0,LL.pop(LL.index(...)))
,我想在指數)的東西(這將讓我的元組的位置'c'作爲第二個元素。
有沒有一個經典的python單線方法來做到這一點?
>>> LL.insert(0,LL.pop([x for x, y in enumerate(LL) if y[1] == 'c'][0]))
>>> LL
[('a', 'c'), ('a', 'a'), ('a', 'b'), ('a', 'd')]
>>>
要查找的位置,您可以:
positions = [i for i, tup in enumerate(LL) if tup[1] == 'c']
現在,您可以採取所需元素的索引,彈出它推到列表
pos = positions[0]
LL.insert(0, LL.pop(pos))
的開始,但你也可以排序使用元組爲重點的項目列表:
sorted(LL, key=lambda tup: tup[1] == 'c', reverse=True)
,如果你不關心其他電子商務秩序lements
2線,但是1號線的解決方案都是低效
>>> LL=[('a','a'),('a','b'),('a','c'),('a','d')]
>>> i = next((i for i, (x, y) in enumerate(LL) if y == 'c'), 0) # 0 default index
>>> LL[0], LL[i] = LL[i], LL[0]
>>> LL
[('a', 'c'), ('a', 'b'), ('a', 'a'), ('a', 'd')]
這什麼都不做,如果索引中沒有找到
>>> LL=[('a','a'),('a','b'),('a','c'),('a','d')]
>>> i = next((i for i, (x, y) in enumerate(LL) if y == 'e'), 0) # 0 default index
>>> LL[0], LL[i] = LL[i], LL[0]
>>> LL
[('a', 'a'), ('a', 'b'), ('a', 'c'), ('a', 'd')]
大。如果y [1] =='c'] [0] 加上[0]在末尾 [x對於x,y在枚舉(LL)中,並且它完美地工作。 謝謝DhruvPathak – chrise 2013-05-10 09:15:47