我是 python 新手,正在尝试找出如何迭代嵌套元组。
这是一个元组:
x=((1,2,('a', 'b', (6,9,7)), 6,('$','@')))
我正在尝试迭代,以便可以单独打印每个值,例如:
1
2
a
b
6
9
7
6
$
@
这是我的代码,请让我知道我在这里做错了什么:
x=((1,2,('a', 'b', (6,9,7)), 6,('$','@')))
f=0
for y in x:
print(x[f])
f = f+1
你可以尝试用递归。检查元素是否是元组,如果是则递归调用函数,如果不是则打印它。
x=(((1,2,3,4),2,('a', 'b', (6,9,7)), 6,('$','@')))
def foo(a):
for b in a:
if isinstance(b,tuple):
foo(b)
else:
print b
foo(x)
输出:
1
2
3
4
2
a
b
6
9
7
6
$
@
对 Mohammad Yusuf 的 answer 进行了轻微修改,并进行了一些 QOL 更改:
def foo(a, depth=0, depth_lim=10, indent_size=1, indent_str="-"):
# Set up indent and increment depth counter
indent = indent_str * ((depth) * indent_size)
depth += 1
#Loop over elements and print if we're not at the depth limit
if depth <= depth_lim:
for b in a:
if isinstance(b, tuple):
foo(b, depth, depth_lim, indent_size, indent_str)
else:
print(indent + str(b))
else:
print("Depth limit reached (" + str(depth_lim) +
"). Increase depth_lim for deeper printing.")
使用示例:
test_tuple = ("a",(("c"),("d"),(("e"),("f"))), "b")
test_foo(test_tuple, depth_lim=3, indent_size=2, indent_str="-")
输出:
a
--c
--d
----e
----f
b