字符串索引超出python元组的范围

字符串索引超出python元组的范围,python,tuples,Python,Tuples,我有一个嵌套的元组: tuple = ((1, 2), 3) 我在另一个函数中收到这个元组,我希望能够将它作为3 1 2 如果我尝试: for x in tuple[0]: print " %s %s %s" % (tuple[1], x[0], x[1]) for x in tuple: print " %s %s %s" % (tuple[1], x[0]) 我发现此错误字符串索引超出范围 如果我尝试: for x in tuple[0]: print " %

我有一个嵌套的元组:

tuple = ((1, 2), 3)
我在另一个函数中收到这个元组,我希望能够将它作为
3 1 2

如果我尝试:

for x in tuple[0]:
    print " %s %s %s" % (tuple[1], x[0], x[1]) 
for x in tuple:
    print " %s %s %s" % (tuple[1], x[0])
我发现此错误
字符串索引超出范围

如果我尝试:

for x in tuple[0]:
    print " %s %s %s" % (tuple[1], x[0], x[1]) 
for x in tuple:
    print " %s %s %s" % (tuple[1], x[0])

我得到的是作为输出的
3 1

您应该正确下标:

>>> t = ((1, 2), 3)
>>> t[1], t[0][0], t[0][1]
(3, 1, 2)

您应该正确下标:

>>> t = ((1, 2), 3)
>>> t[1], t[0][0], t[0][1]
(3, 1, 2)

此代码将任何此类元组解压为一维元组(只要嵌套停止在示例中的级别):


此代码将任何此类元组解压为一维元组(只要嵌套停止在示例中的级别):

当您尝试时:

for x in tuple[0]:
    print " %s %s %s" % (tuple[1], x[0], x[1]) 
然后,当您试图打印x[0],x[1]时,它会显示一个错误,因为x不是元组

它只是一个变量,在for循环的第一次迭代中存储tuple[0][0]的值,在第二次迭代中存储tuple[0][1]的值。

当您尝试:

for x in tuple[0]:
    print " %s %s %s" % (tuple[1], x[0], x[1]) 
然后,当您试图打印x[0],x[1]时,它会显示一个错误,因为x不是元组

它只是一个变量,在for循环的第一次迭代中存储tuple[0][0]的值,在第二次迭代中存储tuple[0][1]的值。

第一种情况 当您在t[0]中对x说
时,您在第一次迭代中访问了1,在第二次迭代中访问了2,因为t[0]=(1,2)。因此,当您在print语句中访问x[0]和x[1]时,您得到了一个超出范围的索引

第二种情况 您在第一次迭代中打印了tuple[1]和x[0],其中tuple[1]是3,x[0]是1。您现在应该会得到一个错误,比如没有传递足够的参数

解决方案: 对于这种特殊情况:

print(t[1], t[0][0], t[0][1])
您还可以在t[0]中运行for循环:

for i in t[0]:
    print " %s %s %s" % (t[1], i[0], i[1]) 
最后,您还可以将嵌套的元组转换为平面元组,然后以较小的混乱程度进行迭代,因为您只需要担心一个较小的维度

第一例 当您在t[0]
中对x说
时,您在第一次迭代中访问了1,在第二次迭代中访问了2,因为t[0]=(1,2)。因此,当您在print语句中访问x[0]和x[1]时,您得到了一个超出范围的索引

第二种情况 您在第一次迭代中打印了tuple[1]和x[0],其中tuple[1]是3,x[0]是1。您现在应该会得到一个错误,比如没有传递足够的参数

解决方案: 对于这种特殊情况:

print(t[1], t[0][0], t[0][1])
您还可以在t[0]中运行for循环:

for i in t[0]:
    print " %s %s %s" % (t[1], i[0], i[1]) 

最后,您还可以将嵌套的元组转换为平面元组,然后以较小的混乱程度进行迭代,因为您只需要担心一个较小的维度

就是这样。我不知道我可以用t[][]来表示嵌套元组。谢谢,就是这样。我不知道我可以用t[][]来表示嵌套元组。谢谢