我有一个元组列表,如下所示:
tuple_list = [(['MATH120'], 3.665, 0.4737615433949868), (['GER'], 3.4566666666666666, 0.3967146329542181), (['FREE'], 3.415636363636364, 0.450256863026264), ([''], 0.041607963246554365, 0.38832820111766464)]
我想做的是将其转换为:
result = [['MATH120', 3.665, 0.4737615433949868],['GER', 3.4566666666666666, 0.3967146329542181],['FREE', 3.415636363636364, 0.450256863026264]]
这意味着我想将其转换为一个包含3对的列表,如果列表中只有空的元素,则删除整个元组,并删除元组中可能存在的空字符串,例如,如果它是这样的:
tuple_list = [(['MATH120',''], 3.665, 0.4737615433949868), (['GER','',''], 3.4566666666666666, 0.3967146329542181), (['FREE'], 3.415636363636364, 0.450256863026264), ([''], 0.041607963246554365, 0.38832820111766464)]
我希望它与前面一样:
result = [['MATH120', 3.665, 0.4737615433949868],['GER', 3.4566666666666666, 0.3967146329542181],['FREE', 3.415636363636364, 0.450256863026264]]
我试着这样做是为了把它们放在列表中:
result= [list(map(list, l)) for l in tuple_list]
但由于浮点值的原因,我一直在出错:
TypeError: 'float' object is not iterable
[e in t[0] if e]
从子列表中删除空字符串;然后附加元组的其余元素;但是如果列表中没有非空元素(any(t[0])
是False
),则跳过此元组如果您的数据总是这样规则,并且您只需要内部列表中的第一个元素,那么只需:最终编辑:
既然您已经澄清了它们是空字符串,我们可以做一些更好的事情:
我认为这是一个很好的陈述
出现此错误的原因是,在调用
map(list, l)
时,l
引用了一个内部元组(例如(['MATH120'], 3.665, 0.4737615433949868)
),这些浮点不能直接转换为列表。我建议您执行以下操作:相关问题 更多 >
编程相关推荐