Python嵌套元组输出报错:string index out of range问题求解
解决嵌套元组的输出问题
首先得帮你理清代码出错的原因,再给你靠谱的解决方案:
为什么你的代码会报错/输出不符合预期?
第一段代码的问题
你写的循环for x in tuple[0],这里tuple[0]是(1,2),所以循环时x会依次取到1和2这两个整数。然后你试图用x[0]和x[1]去取索引,可整数根本没有索引属性,自然就会触发「索引越界」的错误啦。
第二段代码的问题
循环for x in tuple时,x第一次是(1,2),这时候x[0]是1,所以输出3 1;但第二次x是整数3,再用x[0]同样会因为整数没有索引报错,所以你只看到了第一次的输出,程序其实中途就挂了。
另外还要提醒你:别用tuple当变量名哦,它是Python的内置类型,用这个名字会覆盖掉内置的tuple()函数,容易引发其他问题,建议改成my_tuple这类名字。
正确的实现方式
方式一:直接提取固定元素(适合元素数量确定的情况)
既然你的元组结构是固定的((1,2),3),那直接提取对应位置的元素就行:
my_tuple = ((1, 2), 3) print("%s %s %s" % (my_tuple[1], my_tuple[0][0], my_tuple[0][1]))
运行这段代码就能直接得到你想要的3 1 2。
方式二:灵活处理(适合子元组长度不固定的情况)
如果以后你的子元组可能有更多元素,比如((1,2,3),4),可以先把元素整理成一个序列再输出,这样更通用:
my_tuple = ((1, 2), 3) # 把3放在最前面,再把子元组里的元素加进来 output_list = [my_tuple[1]] + list(my_tuple[0]) # 转成字符串用空格连接输出 print(' '.join(map(str, output_list)))
这种写法不管子元组里有几个元素,都能正确输出成「后面的数 + 子元组元素依次排列」的格式。
内容的提问来源于stack exchange,提问作者user3777063
相关产品推荐
相关产品推荐

