如何同时获取元组的第一个和最后一个元素

时间:2012-04-09 12:25:27

标签: python indexing tuples slice

我需要获得任意大小的numpy.ndarray的第一个和最后一个维度。

如果我有shape(A) = (3,4,4,4,4,4,4,3) 我的第一个想法是做result = shape(A)[0,-1],但这似乎不适用于元组,为什么不呢?

有没有比

更简洁的方法
s=shape(A)
result=(s[0], s[-1])

感谢您的帮助

4 个答案:

答案 0 :(得分:17)

我不知道

有什么问题
(s[0], s[-1])

另一种选择是使用operator.itemgetter()

from operator import itemgetter
itemgetter(0, -1)(s)
但是,我认为这不会更好。 (如果不计算实例化itemgetter实例所需的时间,可能会稍快一些,如果经常需要这种操作,可以重复使用。)

答案 1 :(得分:6)

s = (3,4,4,4,4,4,4,3)
result = s[0], s[-1]

答案 2 :(得分:2)

如果您正在使用numpy数组,那么您可以这样做

s = numpy.array([3,4,4,4,4,4,4,3])
result = s[[0,-1]]

其中[0,-1]是第一个和最后一个元素的索引。它还允许更复杂的提取,例如s[2:4]

答案 3 :(得分:1)

这晚来吧;但是,只是添加前面提到的非索引方法。

可以很容易地应用元组拆包来获取第一个和最后一个元素。注意:以下代码使用特殊的星号'*'语法,该语法返回中间部分的列表,其中a和c存储第一个和最后一个值。

例如。

A= (3,4,4,4,4,4,4,3)
a, *b, c = A
print((a, c))

输出 (3,3)