A = ((200, 1.26), ((100, 2.32), (200, 2.32)))
B = ((200, 2.27), (200, 2.05))
C = ((200, 1.35), ((150, 1.8), (200, 1.8)))
D = ((200, 2.27), (200, 1.35), (200, 2.05))
E = (( 200, 2.27), (200, 1.35), ((150, 1.8), (200, 1.8)))
元组中包含元组,数量不确定,层数只有两层,怎么能优雅的把元组中所有的那个小数(位置固定的)取出来?
A = ((200, 1.26), ((100, 2.32), (200, 2.32)))
B = ((200, 2.27), (200, 2.05))
C = ((200, 1.35), ((150, 1.8), (200, 1.8)))
D = ((200, 2.27), (200, 1.35), (200, 2.05))
E = (( 200, 2.27), (200, 1.35), ((150, 1.8), (200, 1.8)))
t = (*A, *B , *C ,*D ,*E)
x = []
def getV(t):
for i in t:
if isinstance(i, tuple):
getV(i)
elif isinstance(i, float):
x.append(i)
getV(t)
print(x)
>>> def getfloat(seq):
for i in seq:
if isinstance(i,tuple):
yield from getfloat(i)
else:
if isinstance(i,float):
yield i
>>> for i in getfloat(A):
print(i)
不算优雅。。。
def extract_iter(t: tuple):
if isinstance(t[1], float):
yield t[1]
else:
for i in t:
yield from extract_iter(i)
def extract(t: tuple) -> list:
tmp_lst = []
for i in t:
it = extract_iter(i)
while True:
try:
tmp_lst.append(next(it))
except StopIteration:
break
return tmp_lst