Python按值访问元组索引

时间:2016-02-12 18:42:03

标签: python tuples

假设我有一个元组(4,5,6,7,8)。我想迭代它,然后每次迭代只打印该索引后的数字。像这样:

for i in tuple:
    #print values to the right of i

示例输出:5,6,7,8,6,7,8,7,8,8。有什么帮助吗?我知道如何通过索引访问元组值,而不是相反。

4 个答案:

答案 0 :(得分:6)

你的意思是这样吗?

t = (4, 5, 6, 7, 8)
for i, _ in enumerate(t, 1):
  print(t[i:])

# (5, 6, 7, 8)
# (6, 7, 8)
# (7, 8)
# (8,)
# ()

如果你想将它们全部加入到输出元组中,下面的1-liner将无效率地执行:

>>> sum((t[i:] for i, _ in enumerate(t, 1)), ())
(5, 6, 7, 8, 6, 7, 8, 7, 8, 8)

更有效的方法是使用itertools.chain.from_iterable

tuple(itertools.chain.from_iterable(
    t[i:] for i, _ in enumerate(t, 1)))

答案 1 :(得分:0)

尝试

tuple = (4,5,6,7,8)
z = []
for i in range(len(tuple)):
    for j in tuple[i+1:]:
        z.append(j)

输出为[5,6,7,8,6,7,8,7,8,8]

答案 2 :(得分:0)

根据Python文档,tuples are immutable objects。因此,如果要在每次遍历元组时更改生成的输出,则需要每次在循环中设置一个新变量。像这样:

t = (5,6,7,8)
for i,n in enumerate(t):
    tnew = t[i:]
    print tnew

答案 3 :(得分:0)

使用列表理解:

t = (4, 5, 6, 7, 8)
>>> [i for n in range(len(t)) for i in t[n+1:]]
[5, 6, 7, 8, 6, 7, 8, 7, 8, 8]

或者如果你想要一个元组,你可以使用生成器表达式(tuple comprehension?):

>>> tuple(i for n in range(len(t)) for i in t[n+1:])
(5, 6, 7, 8, 6, 7, 8, 7, 8, 8)