2016-02-13 24 views
6

我一直在搜索谷歌和本網站的答案對此無濟於事,有幾個不同的搜索條件。所以如果這個問題已經得到解答,我很樂意指出它。加入列表中的最後一個元素


我試圖加入一個範圍列表的元素,包括列表的最後一個元素。這裏是我的測試代碼:

inp = ['1','2','3','4'] 
test = '_'.join(inp[0:2]) 
test2 = '_'.join(inp[2:-1]) 

print(test + ' & ' + test2) 

我知道的範圍將不包括在列表的最後一個元素,所以這只是給我3 test2的,但如果我試圖用0而不是-1得到它通過循環返回來包含最後一個元素,它不會返回任何內容。


我很新的編碼還在,所以如果有完全這樣做的一個簡單的方法它不會讓我感到吃驚。我很樂意知道這是否可以解決,但對於不同的解決方案同樣令人高興。基本上,我將列表中的前兩項拉到列表中,以檢查它們是否與對象名稱對應,並將列表的其餘部分 - 沒有特定數量的元素 - 作爲第二個變量。

我假設我可以做一些事情,比如將前兩個元素從列表中彈出並放入他們自己的列表中,然後加入該列表和截斷的原始列表而不使用範圍。但是,如果檢查失敗,我需要再次使用原始列表,所以我將不得不復制列表。如果可行的話,使用比代碼更少的代碼會很好嗎?

+2

請添加你想要的結果。 – timgeb

+0

它應該打印'1_2&3_4',但有人已經爲我解決了它。 – aryst0krat

回答

4

以獲取列表,包括最後一個元素,離開結束了:

inp = ['1','2','3','4'] 
test = '_'.join(inp[:2]) 
test2 = '_'.join(inp[2:]) 

print(test + ' & ' + test2) 
+0

這正是我所需要的。太簡單了!自從我第一次學習基礎知識以後,就會告訴你我忘記了什麼。 – aryst0krat

2

您可以使用嵌套連接:

>>> ' & '.join(['_'.join(inp[i:j]) for i, j in zip([0, 2], [2, None])]) 
'1_2 & 3_4' 

或一個簡單的解決方案:

>>> ' & '.join(["_".join(inp[:2]), "_".join(inp[2:])]) 
'1_2 & 3_4' 
+0

我很欣賞這個解決方案,因爲列表解析是我需要學習的東西(我不認爲它們存在於2.7中,因爲我的老師從未觸及它),但是暫時另一種解決方案對我的大腦更容易,而且似乎更簡單實行。謝謝你! – aryst0krat

相關問題