这个问题非常简单(与标题不同)。我有一个类型的元组:
p = (1, 2, 3, 4, 5, 6)
# I refer to this as a 6-tuple but p could be an n-tuple
我需要将其转换为更小的元组,例如:
(a, b) = p
这样a <- 1和 b <- (2, 3, 4, 5, 6)
编辑:
我需要 Python v2.7 的代码。另外,我应该提到有很多方法可以做到这一点,但我正在寻找一些自然的东西和一些我不需要处理索引的东西。例如。
a, b, c, d, e = p[0], p[1], p[2], p[3], p[4], p[5:]
不需要。
编辑 2:
在上面的例子中,a 是一个整数,而 b 是我们的新元组。 n 元组到 x 元组背后的想法是新元组的长度小于原始元组。在下面的示例中,我们有 0 元组(整数):
a, b, c = (1, 2, 3)
但是,如果是以下情况:
a, b, c, d = (1, 2, 3)
然后,我们有a <- 1, b <- 2, c <-3, d <- None/Nothing .
请您参考如下方法:
对于一般解决方案:
def split_after(lst, n):
for i in range(n):
yield lst[i]
yield lst[n:]
结果:
>>> a,b,n = split_after(p,2)
>>> a
1
>>> b
2
>>> n
(3, 4, 5, 6)
>>> l = list(split_after(p,3))
>>> l
[1, 2, 3, (4, 5, 6)]
因此,您需要知道左侧有多少项并将其告知函数(因为它无法自行告知,不像 Python 3 中的扩展元组解包语法允许您执行的操作).
