如何将Django查询得到的[('BAJRA',), ('BARLEY',)]转为[BAJRA,BARLEY]的高效方法
最优实现方案
你不需要自己写嵌套循环做转换,Django ORM的values_list方法自带flat=True参数,开启后会直接返回一维的可迭代对象,外层套个list()就能拿到你要的结果:
foodlist2 = list(Foods.objects.values_list('Food', flat=True))
这个方案的效率远高于你现有的实现:不需要在应用层额外遍历嵌套元组,结构转换直接在ORM查询层面完成,同时代码也更简洁易读。
可选替代方案
如果有特殊场景不能使用flat参数,也可以用列表推导式替代原来的两层循环+append的写法,执行效率也会更高:
foodval = Foods.objects.values_list('Food') foodlist2 = [food for tpl in foodval for food in tpl]
内容的提问来源于stack exchange,提问作者Jashan Dhiman
相关产品推荐
相关产品推荐

