2013-05-14 37 views
2

我有兩個列表,我使用listA.extend(listB)進行連接。連接兩個列表,從而列表「A」的最後一個元素和列表「B」的第一個元素連接

我需要實現什麼,當我向listA的是數組listB

我的列表的一個例子的第一個元素來連接listA的最後一個元素是爲listA的下面

末= ... '1633437.0413', '5417978.6108', '1633433.2865', '54']

數組listB的

開始= ['79770.3904', '1633434.364', '5417983.127', '1633435.2672', ...

顯然,當我伸出我得到以下(注54)

'5417978.6108', '1633433.2865', '54', '79770.3904', '1633434.364', '5417983.127 

下面是我要實現其中最後一個和第一個元素連接在一起

[...5417978.6108', '1633433.2865', '*5479770.3904*', '1633434.364', '5417983.127...] 

任何想法是什麼?

回答

4

可以實現在兩個步驟:

A[-1] += B[0] # update the last element of A to tag on contents of B[0] 
A.extend(B[1:]) # extend A with B but exclude the first element 

例子:

>>> A = ['1633437.0413', '5417978.6108', '1633433.2865', '54'] 
>>> B = ['79770.3904', '1633434.364', '5417983.127', '1633435.2672'] 
>>> A[-1] += B[0] 
>>> A.extend(B[1:]) 
>>> A 
['1633437.0413', '5417978.6108', '1633433.2865', '5479770.3904', '1633434.364', '5417983.127', '1633435.2672'] 
+0

乾杯,欣賞它 – HuntMaster 2013-05-14 10:28:44

+0

非常歡迎。 – 2013-05-14 10:47:27

+2

通過將'len(B) - 1'項目變成'B [0] = A.pop()+ B [0];可以避免複製'len(B) - 1'項目A.extend(B)'。 – delnan 2013-05-14 10:51:28

2
newlist = listA[:-1] + [listA[-1] + listB[0]] + listB[1:] 

,或者如果你想擴展listA的 「就地」

listA[-1:] = [listA[-1] + listB[0]] + listB[1:] 
+0

你的就地版本比我的版本更加pythonic。 – 2013-05-14 10:49:58

0

單與列表理解班輪(只是爲了其實:)):

[(x + listB[0]) if i == len(listA) - 1 else x for i, x in enumerate(listA)] + listB[1:] 
相關問題