Skip to main content
 首页 » 编程设计

Python:将 n 元组转换为 x 元组,其中 x n

2025年05月04日13zfyouxi

这个问题非常简单(与标题不同)。我有一个类型的元组:

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 中的扩展元组解包语法允许您执行的操作).