将元组的一部分解包成元组

Mik*_*tty 3 python tuples python-3.x

我有一个这样的元组

t = (1, '0076', 'AU', '9927016803A', '9927013903B', '0010', 'VO')
Run Code Online (Sandbox Code Playgroud)

我想提取前 6 个值作为元组(按顺序)和最后一个值作为字符串。

下面的代码已经工作,但我想知道是否有一个“单行”来实现我正在寻找的东西。

# works, but it's not nice to unpack each value individually
cid,sc,ma,comp,mat,step,alt = t 
t_new = (cid,sc,ma,comp,mat,step,)
print(t_new, alt) # (1, '0076', 'AU', '9927016803A', '9927013903B', '0010') VO
Run Code Online (Sandbox Code Playgroud)

这与我正在寻找的非常接近,但它将第一个值作为列表而不是元组返回:

# works, but returns list
*t_new,alt = t 
print(t_new, alt) # [1, '0076', 'AU', '9927016803A', '9927013903B', '0010'] VO
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以下方法,但没有成功:

tuple(*t_new),alt = t # SyntaxError
(*t_new),alt = t # still a list
(*t_new,),alt = t # ValueError
Run Code Online (Sandbox Code Playgroud)

如果没有其他方法,我可能会进行第二次尝试并将列表转换为元组。

hir*_*ist 5

为什么不只是:

t = (1, '0076', 'AU', '9927016803A', '9927013903B', '0010', 'VO')

t_new, alt = t[:-1], t[-1]
print(t_new, alt)   # (1, '0076', 'AU', '9927016803A', '9927013903B', '0010') VO
Run Code Online (Sandbox Code Playgroud)