2 回答

TA贡献1873条经验 获得超9个赞
这似乎清理了一些东西。无需检查它是否是列表,因为也只有元组和列表。
l = [(2.0000001192092896, 3.3999999761581421), [4, 3], (1.9999999701976776, 1.7999999821186066), (0.875, 1.125), [-1, 0], [-1, 4], (1.5, 3.5)]
full_list = []
inner_list = []
for value in l:
if isinstance(value, tuple):
inner_list.append(value)
if len(inner_list) > 0:
full_list.append(inner_list)
inner_list = []
else:
inner_list.append(value)
print(full_list)
这将打印:
[[(2.0000001192092896, 3.399999976158142), [4, 3], (1.9999999701976776, 1.7999999821186066)], [(0.875, 1.125), [-1, 0], [-1, 4], (1.5, 3.5)]]

TA贡献1876条经验 获得超5个赞
取tuples存在的索引然后zip它们并使用列表理解为:
tup_index = [index for index,value in enumerate(l) if isinstance(value,tuple)]
full_list = [l[first:last+1] for first,last in zip(tup_index[::2],tup_index[1::2])]
print(full_list)
[[(2.0000001192092896, 3.399999976158142),[4, 3],(1.9999999701976776, 1.7999999821186066)],
[(0.875, 1.125), [-1, 0], [-1, 4], (1.5, 3.5)]]
或者,如果列表包含奇数个元组,则:
if len(tup_index)%2==0:
full_list = [l[first:last+1] for first,last in zip(tup_index[::2],tup_index[1::2])]
else:
tup_index.append(len(l)+1)
full_list = [l[first:last+1] for first,last in zip(tup_index[::2],tup_index[1::2])]
添加回答
举报