将列表中的最后一个元素加入。

6

我已经在谷歌和本网站上搜索了几个不同的关键词,但都没有找到答案。如果这个问题已经得到解答,我很愿意被指引。


我试图连接一个列表中一系列元素,包括列表的最后一个元素。以下是我的测试代码:

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

print(test + ' & ' + test2)

我知道range不包括列表的最后一个元素,所以这只会给我test2的3,但是如果我试图使用0而不是-1来循环回到最后一个元素,以使其包括在内,它会返回空。


我还是很新手,如果有更简单的方法解决问题,我不会感到惊讶。如果这是可解决的问题,我很高兴知道,同样地,如果有其他的解决方案,我也很高兴知道。基本上,我要把列表中的前两个项目提取出来,与对象名称进行比较,剩下的列表(没有特定数量的元素)作为第二个变量。

我认为我可以像弹出列表中的前两个元素一样将它们分开,然后将该列表和缩短的原始列表连接起来,而不使用范围。但是,如果检查失败,我需要重新使用原始列表,因此我还需要复制一份列表。如果可能的话,最好用比那需要更少的代码完成吗?


2
请添加您想要的结果。 - timgeb
它应该打印出“1_2&3_4”,但是无论如何,有人已经为我解决了它。 - aryst0krat
2个回答

5
为了获取包含最后一个元素的列表,请省略结尾部分:
inp = ['1','2','3','4']
test = '_'.join(inp[:2])
test2 = '_'.join(inp[2:])

print(test + ' & ' + test2)

这正是我所需要的。而且也太简单了!这只是表明了我自从学习基础知识以来忘记了什么。 - 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'

我很欣赏这个解决方案,因为列表推导式是我需要学习的内容(我认为在2.7中它们不存在,因为我的老师从未涉及过它),但目前来看,另一个解决方案对我的大脑更容易,似乎更简单易行。不过还是谢谢你! - aryst0krat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接