您可以通過遞歸地使用a和b構建列表來解決此問題,從默認用戶開始。
def build_list(listA,listB,default=None):
if default is None:
default = [DEFAULT_USER]
if len(default) == 5 or len(listA) + len(listB) == 0:
return default
else:
default = listA[:1] + default + listB[:1]
return build_list(listA[1:],listB[1:],default)
這將listA的來開始和數組listB的一個元素添加一個元素到最後,直到默認的長度是5,如果其中一個清單變空,它會簡單地從該列表中添加什麼,給你想要的確切行爲。
它一直持續下去,直到所有輸入列表的長度爲0或缺省長度爲5.此方法可用於包含零的任何長度的列表,但不會保留列表A中元素的排序。
了一些測試實例:
>>> DEFAULT_USER=1000
>>> build_list([1],[2])
[1,1000,2]
>>> build_list([],[1,2,3,4,5,6,7,8,9])
[1000, 1, 2, 3, 4]
>>> build_list([1,2,3,4,5],[6,7,8,9,10])
[2, 1, 1000, 6, 7]
>>> build_list([1,2,3,4,5,6,7,8,9],[])
[4, 3, 2, 1, 1000]
是什麼目的所有這些?也許它可以幫助找到解決方案。 –
@AntoinePinsard這個想法是做一個排名。默認用戶是我想知道排名的用戶。 listA是比defaultUser和listB用戶點數少於默認用戶點數的用戶 – 62009030