如何将[(a, ),(b, ),(c, ),(d, )]转为[a,b,c,d]?SQL取数报错求助
解决SQL查询结果的单元素元组列表转扁平列表问题
从SQL查出来的结果默认是元组格式,哪怕只有一个字段,也会返回(值,)这种单元素元组,所以你得到的列表才是[(a, ),(b, ),(c, ),(d, )]这种结构。针对这个问题,有几种简单的解决方式:
列表推导式(最简洁):直接遍历原列表,取出每个元组的第一个元素
original_list = [(1,), (2,), (3,), (4,)] flat_list = [item[0] for item in original_list] # 输出: [1,2,3,4]循环逐个添加(最直观):适合刚接触Python的新手,逻辑清晰
original_list = [(1,), (2,), (3,), (4,)] flat_list = [] for tpl in original_list: flat_list.append(tpl[0])用itertools工具类:如果后续可能处理多元素元组的情况,这个方法扩展性更好
from itertools import chain original_list = [(1,), (2,), (3,), (4,)] flat_list = list(chain.from_iterable(original_list))
至于你之前遇到的Type Error: can only concatenate list(not "tuple") to list,大概率是你尝试用flat_list += tpl这种写法——+=要求右边是列表,而tpl是元组,换成flat_list.extend(tpl)也能解决,但不如直接取第一个元素高效。
内容的提问来源于stack exchange,提问作者Anime for Life
相关产品推荐
相关产品推荐

