0
列表對象的屬性我有標記對象的兩個列表對象的兩個列表:交纏基於Python中
class Marker():
def __init__(self,marker_number, marker_data):
self.marker_number = marker_number
self.marker_data = marker_data
,我想做的事情是這樣的:
>>> existing_markers = [Marker(marker_number=1, marker_data= 'a'),
Marker(marker_number=2, marker_data= 'b'),
Marker(marker_number=3, marker_data= 'c'),
Marker(marker_number=4, marker_data= 'd'),
Marker(marker_number=5, marker_data= 'e'),]
>>> new_markers = [ Marker(marker_number=1, marker_data= 'aa'),
Marker(marker_number=3, marker_data= 'bb'),
Marker(marker_number=5, marker_data= 'cc'),]
>>> interlace_markers(existing_markers, new_markers)
[Marker(marker_number=1, marker_data= 'a'),
Marker(marker_number=2, marker_data= 'aa'),
Marker(marker_number=3, marker_data= 'b'),
Marker(marker_number=4, marker_data= 'c'),
Marker(marker_number=5, marker_data= 'bb'),
Marker(marker_number=6, marker_data= 'd'),
Marker(marker_number=7, marker_data= 'e'),
Marker(marker_number=8, marker_data= 'cc')]
使當我交錯標記時,new_markers列表中與原始標記列表具有相同編號的標記會出現在原始標記之後,但編號更新會保留編號的序列。這是我目前的做法:
def interlace_markers(current_markers_list, new_markers_list):
interlaced_markers = []
#interlace the markers
for existing_marker in current_markers_list:
interlaced_markers.append(existing_marker)
for new_marker in new_markers_list:
if new_marker.marker_number== existing_marker.marker_number:
interlaced_markers.append(new_marker)
#reset the sequence
sequence_index = 1
for marker in interlaced_markers:
marker.marker_number= sequence_index
sequence_index += 1
return interlaced_markers
我這裏有兩個問題:
- 什麼是做到這一點
- 原始列表將可能是大〜10K最Python的方式,並從創建一個 外部文件,但新的列表將會很短〜100-300長,是 有一個更有效的方式來做到這一點,而不是使用列表?
穩定排序的好主意。但是,這不會重新編號'marker_number'。 – eumiro 2012-08-16 14:31:40
@eumiro - 固定。我錯過了這部分問題。謝謝。 – mgilson 2012-08-16 14:33:45
@mgilson當這兩個標記號碼相同時,它是否會在現有標記之後重複排列新標記? – Ctrlspc 2012-08-16 14:34:23