我不知道內置的,肯定不是非常Python的,但這個工程(到位修改):
list1 = [
['4', 'and', '3', '4', 'EOS', '15'],
['4', 'what', '3', '0', 'and', '2'],
['4', 'is', '2', '1', 'what', '3'],
['4', 'the', '2', '1', 'is', '5']
]
prev = ['0','EOS','0']
for i in list1:
tmp = i[0:3]
i[0:3] = prev
prev = tmp
print list1
好一點,但還是醜(創建一個新的列表):
list1 = [
['4', 'and', '3', '4', 'EOS', '15'],
['4', 'what', '3', '0', 'and', '2'],
['4', 'is', '2', '1', 'what', '3'],
['4', 'the', '2', '1', 'is', '5']
]
prev = ['0','EOS','0']
y = [prev + [0,0,0]] + list1
list2 = [y[i][0:3] + list1[i][3:] for i in range(0, len(list1))]
在前面加上新數據修改舊列表,還創建了一個新的列表:
list1 = [
['4', 'and', '3', '4', 'EOS', '15'],
['4', 'what', '3', '0', 'and', '2'],
['4', 'is', '2', '1', 'what', '3'],
['4', 'the', '2', '1', 'is', '5']
]
list1 = [['0','EOS','0']] + list1
print [list1[i-1][0:3] + list1[i][3:] for i in range(1, len(list1))]
這可能是最好的。利用序列[-1]的行爲,創建一個新列表:
list1 = [
['4', 'and', '3', '4', 'EOS', '15'],
['4', 'what', '3', '0', 'and', '2'],
['4', 'is', '2', '1', 'what', '3'],
['4', 'the', '2', '1', 'is', '5']
]
# Put the new data on the end of the list
list1[-1][0:3] = ['0','EOS','0']
# note how i=0 -1 references the *last* element of the list
print [list1[i-1][0:3] + list1[i][3:] for i in range(0, len(list1))]
如果我們可以縮小一個級別,我們可以更好地回答。例如,我想知道爲什麼你不能把原來的六個列表分成兩個三個列表。這種轉變會使你想要一件小事(只需在第一個列表前面加上一個三元組列表,然後再從列表中刪除最後一個列表列表)。 –
如果我們可以放大*少數*級別,也許整個練習是沒有意義的。我的意思是,你真的**想做什麼?我無法理解它。 –
我有兩種不同的分析方法,用於對按文字分解的文本進行兩種不同的語法分析。分析以不同的方式分解句子,例如,在另一個句子中不加入句子的句子(EOS)。這兩個分析需要對齊,以便我可以對它們運行統計。所以,我把它們放在一張桌子上,我正在比較欄目。大多數情況下,它們都是關閉的:因此,我檢查文本列是否不匹配,然後在一個(或其他)中插入一個EOS,然後將所有內容都推下來並繼續比較。我一直在Pythoning 2周,所以...要溫柔! :) – SarahVW