从左到右解压缩Python元组?

时间:2016-07-08 22:10:02

标签: python python-3.x tuples iterable-unpacking

是否有一种干净/简单的方法可以从左到右解压缩右侧的Python元组?

例如

j = 1,2,3,4,5,6,7

(1,2,3,4,5,6,7)

v,b,n = j[4:7] 

我可以修改切片表示法以便v = j[6], b=j[5], n=j[4]吗?

我意识到我可以命令左侧获得所需的元素但是可能存在我只想从左到右解包元组的情况。

5 个答案:

答案 0 :(得分:50)

这应该做:

v,b,n = j[6:3:-1]

-1

开始的6步长值

答案 1 :(得分:14)

如果您想保留原始索引(即不想打扰更改4和7到6和3),您还可以使用:

v, b, n = (j[4:7][::-1])

答案 2 :(得分:10)

 n,b,v=j[4:7]

也会奏效。您只需更改订单或返回的解压缩值

即可

答案 3 :(得分:8)

您可以在撤消后忽略第一个并使用extended iterable unpacking

j = 1, 2, 3, 4, 5, 6, 7


_, v, b, n, *_ = reversed(j)

print(v, b, n)

哪会给你:

6 5 4

或者,如果您想获得任意元素,可以使用operator.itemgetter

j = 1, 2, 3, 4, 5, 6, 7

from operator import itemgetter


def unpack(it, *args):
    return itemgetter(*args)(it)

v,b,n = unpack(j, -2,-3,-4)

print(v, b, n)

itemgetter 的优势在于它适用于任何可迭代的元素,并且元素不必连续。

答案 4 :(得分:0)

你可以试试这个,

-1表示从反向看,最后一个元素为最后一个元素

>>> v,b,n=j[-1:-4:-1]
>>> print 'v=',v,'b=',b,'n=',n
v= 7 b= 6 n= 5
>>>