2016-02-13 56 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

相关问题