2016-04-21 128 views
3

我有以下示例列表:插入值列表

list_a = [(1, 6), 
      (6, 66), 
      (66, 72), 
      (72, 78), 
      (78, 138), 
      (138, 146), 
      (154, 208), 
      (208, 217), 
      (217, 225), 
      (225, 279), 
      (279, 288) 
      ..... 
      ] 

而我需要的是:

  1. 名單上每6種元素後,插入在這個地方新 元組由前一個數字的最後一個數字和前6個元組中的第一個 數字組成。
  2. 插入元組後, 插入另一個,由前一個 的第一個數加上1,並由前一個數的最後一個數和下一個元組的第一個 數組成。

所以結果可能看起來像:

list_a = [(1, 6), 
      (6, 66), 
      (66, 72), 
      (72, 78), 
      (78, 138), 
      (138, 146), 
      (146, 1),  # <- first part 
      (147, 154), # <- second part 
      (154, 208), 
      (208, 217), 
      (217, 225), 
      (225, 279), 
      (279, 288) 
      (288, 147)  # <- first part 
      ..... 
      ] 

我已經試過了,但最後的最後一個要素缺少

for i in range(0, len(list_a)+1, 6): 
    if i > 0: 
     list_a.insert(i, (list_a[i - 1][1], list_a[i - 6][0])) 
     list_a.insert(i + 1, (list_a[i - 1][1] + 1, list_a[i + 1][0],)) 
+0

我懷疑如果你沒有展示你所嘗試過的東西,人們會幫助你。 – jcfollower

+0

@jcfollower感謝提示,我要編輯 – efirvida

回答

2

,我只想通過不斷追加建立一個新的列表而不是插入到現有的列表中。這應該工作:

n = len(list_a) 
newList = [] 
for i in range(0,n, 6): 
    newList.append(list_a[i:i+6]) 

    newTuple1 = (newList[-1][1], newList[i][0]) 
    newList.append(newTuple1) 
    try: 
     newTuple2 = (newTuple1[0] + 1, list_a[i+6][0]) 
     newList.append(newTuple2) 
    except IndexError: 
     print "There was no next tuple" 

print newList 

輸出

There was no next tuple 
[(1, 6), (6, 66), (66, 72), (72, 78), (78, 138), (138, 146), (146, 1), (147, 154), (154, 208), (208, 217), (217, 225), (225, 279), (279, 288), (300, 400), (400, 146)] 

請注意,您的例子沒有說明如何在情況下,兩個做,如果沒有額外的元組。假設list_a中有12個元組。然後當你到達第二組時,沒有下一個元組。

希望有所幫助。

+0

感謝它的幫助!我試了一下真實的列表示例 – efirvida

+0

請確保在解決問題時選擇答案 –