如何从zip解压缩一些参数,而不是全部?

sau*_*ean 7 python

我的SQL查询:

 select id,value,zvalue from axis
Run Code Online (Sandbox Code Playgroud)

给我这样的结果:

   ans=(1,23,34)(12,34,35)(31,67,45)(231,3412,234)
Run Code Online (Sandbox Code Playgroud)

现在,如果我想将所有这3个变量作为3个不同的列表

id,value,zvalue=zip(*ans)
Run Code Online (Sandbox Code Playgroud)

它会给我3个单独的列表.但如果我只想将id和value作为单独的列表.它会给我很多值来解决错误.

id,value =zip(*ans)
Run Code Online (Sandbox Code Playgroud)

有什么方法我可以从SQL查询创建任意数量的列表.因为如果查询中有10个参数,我必须使用ZIP时使用所有参数??? 请帮忙

Mac*_*cke 14

参数的数量必须匹配,这是Python 2中的规则.对于Python 3,您可以使用*来捕获到列表中.

常见的pythonic(2.x)解决方法是_用来表示你不会使用的变量,即:

id,value,_ = zip(*ans) # only works for exactly three values
Run Code Online (Sandbox Code Playgroud)

正如DSM评论的那样,对于Python 3,您可以使用*来抓取"剩余"args作为列表:

id, value, *_ = zip(*ans) # _ will be a list of zero or more args
Run Code Online (Sandbox Code Playgroud)

或者,最简单的,只是从zip切片返回:

id,value = zip(*ans)[:2] # ignore all but first two values  
Run Code Online (Sandbox Code Playgroud)

  • 参数数量必须匹配的规则在Python 3中略微放宽,其中诸如"first,*middle,last = [1,2,3,4]"之类的东西给出1,[2,3],4. (3认同)