我的SQL查询:
select id,value,zvalue from axis
给我这样的结果:
ans=(1,23,34)(12,34,35)(31,67,45)(231,3412,234)
现在,如果我想将所有这3个变量作为3个不同的列表
id,value,zvalue=zip(*ans)
它会给我3个单独的列表。 但如果我只想将id和value作为单独的列表。它会给我很多值来解决错误。
id,value =zip(*ans)
有什么方法可以从sql查询创建任意数量的列表。因为如果查询中有10个参数,我必须在使用ZIP时使用所有参数??? 请帮忙
答案 0 :(得分:14)
参数的数量必须匹配,这是Python 2中的规则。对于Python 3,您可以使用*来捕获到列表中。
常见的pythonic(2.x)解决方法是使用_
来表示不使用的变量,即:
id,value,_ = zip(*ans) # only works for exactly three values
正如DSM评论的那样,对于Python 3,您可以使用*来抓取“剩余的”args作为列表:
id, value, *_ = zip(*ans) # _ will be a list of zero or more args
或者,最简单的,只需从zip:
切片id,value = zip(*ans)[:2] # ignore all but first two values
答案 1 :(得分:2)
如果您使用的是Python 3,则可以使用它来解压 n 其他元素:
In [0]: a, b, *_ = (1, 2, 3, 4)
In [1]: a
1
答案 2 :(得分:1)
我想你可能正在寻找这样的东西:
ids = [t[0] for t in ans]
values = [t[1] for t in ans]
第一个列表推导获取ans
中所有元组的第一列,即id
列。第二个列表推导获得ans
中所有元组的第二列,即value
列。