Pythonic将两个相邻列表元素转换为元组并保留其余列表的方法

时间:2014-09-16 08:40:29

标签: python list tuples

我正在寻找一种优雅的转换方式

lst = [A, B, C, D, E..]

lst = [A, B, (C, D), E]

所以我想在索引2和3上执行此操作,但保留列表。有一种优雅的方式来执行此操作吗?我正在寻找一个lambda函数,但我没有看到它。

2 个答案:

答案 0 :(得分:5)

就地改变:

lst[2:4] = [tuple(lst[2:4])]

切片分配确保我们用赋值右侧列表的内容替换旧元素,该列表只包含一个元组。

演示:

>>> lst = ['A', 'B', 'C', 'D', 'E']
>>> lst[2:4] = [tuple(lst[2:4])]
>>> lst
['A', 'B', ('C', 'D'), 'E']

答案 1 :(得分:0)

您可以使用:

lst[2] = lst[2], lst.pop(3)

或更一般地说:

lst[i] = lst[i], lst.pop(i+1)

但是,您必须确保两个索引在避免IndexError例外时都有效。